【问题标题】:Integrating Azure AD authentication in ASP.NET Core boilerplate在 ASP.NET Core 样板中集成 Azure AD 身份验证
【发布时间】:2020-02-27 08:22:34
【问题描述】:

我从https://aspnetboilerplate.com/Templates(带有 Angular SPA 的 ASP.NET Core)下载了免费模板,现在正在尝试集成 Azure AD 身份验证。我尝试了一些 Microsoft 提供的示例,这些示例都可以正常工作,但是,我无法使用此模板。

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

提前致谢!

【问题讨论】:

  • 你能告诉我们你尝试过哪些例子吗?
  • 嘿里卡多。我尝试了以下示例:docs.microsoft.com/en-us/azure/active-directory/develop/… 它创建了一个新的应用程序注册,我可以下载一个解决方案。运行解决方案时,这有效。然后,我将示例中的所有必要配置和代码复制到下载的模板中,但它不起作用。
  • 你能通过 github 或类似网站分享你的代码吗?我找不到 ABPAuthorize(属性?)。
  • 所以 AbpAuthorize 属性来自模板。可以在此处找到来自 aspnetcoreboilerplate 模板的源代码:github.com/aspnetboilerplate/aspnetboilerplate/tree/dev/src。 Microsft 的示例使用标准的 Authorize 属性来保护端点。我的问题与这篇文章有关:github.com/aspnetboilerplate/aspnetboilerplate/issues/5155 我有同样的问题,我正在尝试使用 AZure AD 生成的 JWT 令牌进行身份验证。但我的猜测是 AbpAuthorize 属性也在检查其他一些东西。
  • @JorenSynaeve 好的,我会看看,然后再找你。

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


【解决方案1】:

我正在努力解决同样的问题。 我提出了这个想法,但它只解决了部分问题。 在您应该能够通过 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.UIYourNamespace.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框架中验证或注册用户

【讨论】:

    猜你喜欢
    • 2019-12-13
    • 2020-07-27
    • 2020-05-27
    • 2020-07-12
    • 2018-06-17
    • 1970-01-01
    • 2018-06-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多