Интеграция аутентификации Azure AD в ASP. NET Базовый шаблон - PullRequest
0 голосов
/ 27 февраля 2020

Я скачал бесплатный шаблон с https://aspnetboilerplate.com/Templates (ASP. NET Core с Angular SPA) и сейчас пытаюсь интегрировать Azure AD аутентификацию. Я попробовал некоторые примеры, предоставленные Microsoft, и все они работают, однако я не могу заставить его работать с этим шаблоном.

Может кто-нибудь подсказать мне, как настроить это с помощью атрибута ABPAuthorize? В настоящее время я получаю действительный токен JWT от службы входа в систему, но при использовании этого токена я получаю запрещенную ошибку 403.

Заранее спасибо!

1 Ответ

0 голосов
/ 29 февраля 2020

Я борюсь с той же проблемой. Я придумал эту идею, но она решает только часть проблемы. После того как вы сможете подключиться к контроллеру через Azure AD

  1. Добавить в настройки приложений. json
  "Authentication": {
    "AzureAd": {
      "IsEnabled": "true",
      "Instance": "https://login.microsoftonline.com/",
      "Domain": "myDomain.onmicrosoft.com",
      "TenantId": "57****t6",
      "ClientId": "8a***44",
      "CallbackPath": "/signin-oidc"
    }
Установить пакет nuget Microsoft.AspNetCore.Authentication.AzureAD.UI до YourNamespace.Web.Host Добавить в Startup.cs app.UseAuthorization(); Например:
public void Configure(IApplicationBuilder app, ILoggerFactory loggerFactory)
{
    ...
    app.UseAuthentication();
    app.UseAuthorization();
    ...
}
Добавить в 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;
        });
    }            ...
}
Добавить в контроллер 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!";
    }
}
Затем передайте токен в заголовке

TODO:

Проверка или регистрация пользователя в рамках ABP

...