在ASP.NET Core样板中集成Azure AD身份验证

时间:2020-02-27 08:22:34

标签: asp.net azure-active-directory abp

我从enter image description here(带有Angular SPA的ASP.NET Core)下载了免费模板,现在正尝试集成Azure AD身份验证。我已经尝试了Microsoft提供的一些示例,并且所有这些示例都可以使用,但是,我无法使其与该模板一起使用。

有人可以指导我如何使用ABPAuthorize属性进行设置吗?我目前正在从登录服务获取有效的JWT令牌,但是使用此令牌时,却遇到了403禁止错误。

谢谢!

1 个答案:

答案 0 :(得分:0)

我正在努力解决相同的问题。 我想出了这个主意,但它只能解决部分问题。 在您应该能够通过Azure AD与控制器连接之后

  1. 添加到appsettings.json
  "Authentication": {
    "AzureAd": {
      "IsEnabled": "true",
      "Instance": "https://login.microsoftonline.com/",
      "Domain": "myDomain.onmicrosoft.com",
      "TenantId": "57****t6",
      "ClientId": "8a***44",
      "CallbackPath": "/signin-oidc"
    }
  1. 安装nuget软件包 Microsoft.AspNetCore.Authentication.AzureAD.UI YourNamespace.Web.Host
  2. 添加到Startup.cs app.UseAuthorization(); 例如:
public void Configure(IApplicationBuilder app, ILoggerFactory loggerFactory)
{
    ...
    app.UseAuthentication();
    app.UseAuthorization();
    ...
}
  1. 添加到AuthConfigurer.cs
public static void Configure(IServiceCollection services, IConfiguration configuration)
{
    if (bool.Parse(configuration["Authentication:AzureAd:IsEnabled"]))
    {
        services.AddAuthentication(AzureADDefaults.BearerAuthenticationScheme)
        .AddAzureADBearer(options => configuration.Bind("Authentication:AzureAd", options));

        services.Configure<OpenIdConnectOptions>(AzureADDefaults.OpenIdScheme, options =>
        {
            options.Authority = options.Authority + "/v2.0/";
            options.TokenValidationParameters.ValidateIssuer = false;
        });
    }            ...
}
  1. 添加到控制器AuthorizeAttribute:
    [Authorize(AuthenticationSchemes = AzureADDefaults.BearerAuthenticationScheme)]
    例如:
[Authorize(AuthenticationSchemes = AzureADDefaults.BearerAuthenticationScheme)]
[Route("api/[controller]/[action]")]
[ApiController]
public class HelloController : LouncherPadControllerBase
{
    [HttpGet]
    public string Get()
    {
        return "Hello, this controller works!";
    }
}
  1. 然后在标头中传递令牌

待办事项:

在ABP框架中验证或注册用户