Я борюсь с той же проблемой. Я придумал эту идею, но она решает только часть проблемы. После того как вы сможете подключиться к контроллеру через Azure AD
- Добавить в настройки приложений. 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