2017-08-17 126 views
1

我正在開發應用程序使用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發出的

我已閱讀了許多文章和帖子,但找不到任何東西來幫助我。

回答

1

您可以在使用Azure AD的雲應用程序中使用基於角色的訪問控制。在RBAC中,角色是一組權限。角色可以授予用戶或用戶(組)的集合。有關教程和代碼示例,請閱讀this article

要獲取用戶的組,您可以使用Azure AD組聲明。配置您的應用程序以接收組聲明:

  1. 在您的應用程序頁面中,單擊「清單」以打開內聯清單編輯器。
  2. 通過查找「groupMembershipClaims」設置並將其值設置爲「All」(或者如果您對分發列表不感興趣)來設置其值爲「SecurityGroup」。

  3. 保存清單。

在app中授權後,您可以找到當前登錄用戶的組信息。請點擊herehere以獲取有關集團索賠的更多詳情。

當然,您可以隨時調用microsft graph api來獲取用戶的組信息或應用程序角色信息。使用微軟圖形API查看List memberOf操作。

+0

非常感謝您的回答,南禹!我真的已經想通了,並且來到這裏回答我自己的問題,但是,你所支持的文章肯定會有用!還有另一個問題,我正在努力弄清楚如何在我的應用程序中使用自定義角色。我在清單文件中添加了兩個角色,但我沒有發現如何使用新的Azure門戶將這些角色分配給我的組。當我進入我的應用程序的IAM部分時,在角色列表中看不到我的自定義角色。 – Ewertonews

+0

在azure門戶中,通過點擊左側導航欄中的Active Directory導航到您的租戶,單擊「企業應用程序」 - >選擇您的應用程序 - >單擊「用戶和組」 - >單擊「添加用戶」按鈕以添加要分配角色的用戶 - >選擇一個用戶並選擇您在清單中定義的角色。 –

相關問題