我正在開發應用程序使用Asp.net核心1.1和角4。基於令牌的身份驗證在Asp.Net核心API與令牌從Azure AD獲得通過ADAL
只有一個解決方案,我有我的API和Angular應用程序。所以我不需要單獨託管它們或啓用cors。爲了從客戶端進行調用,我只需從角度的http方法中傳遞「/ mycontroler」。
這個應用程序的要求之一是使用登錄與Azure AD,但我找不到任何清晰和uptodate,可以幫助我實現此流程。
我到目前爲止是從前端登錄使用Adal,我能夠接收用戶信息和令牌。那麼,我現在如何在我的api中使用這個令牌來限制對資源的訪問?
我有我的API啓動代碼是這樣的:
public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
{
app.Use(async (context, next) =>
{
await next();
if (context.Response.StatusCode == 404 &&
!Path.HasExtension(context.Request.Path.Value) &&
!context.Request.Path.Value.StartsWith("/api/"))
{
context.Request.Path = "/index.html";
await next();
}
});
app.UseExceptionHandler(errorApp =>
{
errorApp.Run(async context =>
{
context.Response.StatusCode = 500; // or another Status accordingly to Exception Type
context.Response.ContentType = "application/json";
var error = context.Features.Get<IExceptionHandlerFeature>();
if (error != null)
{
var ex = error.Error;
await context.Response.WriteAsync(ex.Message, Encoding.UTF8);
}
});
});
app.UseJwtBearerAuthentication(new JwtBearerOptions
{
Authority = $"{Configuration["Authentication:AzureAd:AADInstance"]}{Configuration["Authentication:AzureAd:TenantId"]}",
Audience = Configuration["Authentication:AzureAd:ClientId"],
TokenValidationParameters =
new Microsoft.IdentityModel.Tokens.TokenValidationParameters
{
ValidIssuer =
$"{Configuration["Authentication:AzureAd:AADInstance"]}{Configuration["Authentication:AzureAd:TenantId"]}/v2.0"
}
});
app.UseMvcWithDefaultRoute();
app.UseDefaultFiles();
app.UseStaticFiles();
}
}}
,但我不知道到底是什麼在我的控制器做檢查用戶權限和其他信息一樣他們所在的團體。
在大多數情況下,我發現是使用Identity在API本身中發出的令牌,但我的情況不同,因爲令牌是由AAD發出的。
我已閱讀了許多文章和帖子,但找不到任何東西來幫助我。
非常感謝您的回答,南禹!我真的已經想通了,並且來到這裏回答我自己的問題,但是,你所支持的文章肯定會有用!還有另一個問題,我正在努力弄清楚如何在我的應用程序中使用自定義角色。我在清單文件中添加了兩個角色,但我沒有發現如何使用新的Azure門戶將這些角色分配給我的組。當我進入我的應用程序的IAM部分時,在角色列表中看不到我的自定義角色。 – Ewertonews
在azure門戶中,通過點擊左側導航欄中的Active Directory導航到您的租戶,單擊「企業應用程序」 - >選擇您的應用程序 - >單擊「用戶和組」 - >單擊「添加用戶」按鈕以添加要分配角色的用戶 - >選擇一個用戶並選擇您在清單中定義的角色。 –