Я делаю все изменения в своем API для использования Azure Ad с этой и этой функцией связи, но когда API развернут, мне нужно, чтобы пользователь получил URL https://myapi.com/swagger (например), чтобы перенаправить его в Azure Ad login, затем узнать, есть ли у клиента права на использование этого API или нет, и перенаправить его снова в мой API и показать точки доступа, к которым он имеет доступ.
Я внесу некоторые изменения в startup.cs, чтобы использовать OpenIdConnect
//Add AddAzureAdBearer Auth options
services.AddAuthentication(options =>
{
options.DefaultScheme = CookieAuthenticationDefaults.AuthenticationScheme;
options.DefaultChallengeScheme = OpenIdConnectDefaults.AuthenticationScheme;
options.DefaultAuthenticateScheme = OpenIdConnectDefaults.AuthenticationScheme;
//options.DefaultScheme = JwtBearerDefaults.AuthenticationScheme;
})
.AddOpenIdConnect(option =>
{
option.ClientId = Client;
option.Authority = $"{Instance}/{Tenant}";
option.SignedOutRedirectUri = "https://localhost:44308";
option.AuthenticationMethod = OpenIdConnectRedirectBehavior.RedirectGet;
option.SaveTokens = true;
option.Events = new OpenIdConnectEvents
{
OnRemoteFailure = context =>
{
context.HandleResponse();
return Task.CompletedTask;
}
};
})
.AddCookie()
.AddAzureAdBearer(options => _configuration.Bind("Ad", options));
И я добавляю HomeController для перенаправления на пользовательский интерфейс Swagger:
[Authorize]
public class HomeController : Controller
{
[HttpGet("")]
public ActionResult Index()
{
return Redirect("~/swagger");
}
}
Когда я запускаю API, он работает, как указано, но когда вы пишете https://{host:port}/swagger
, он не работает, не запускает процесс аутентификации и автоматически переходит на https://{host:port}/swagger/index.html
.
Как я могу это исправить?
Я работаю с Net Core 2.0 и Swashbuckle для Swagger.