Привет, я разработал пользовательский интерфейс Swagger для своего основного веб-приложения .net. Я добавил к нему аутентификацию. Я зарегистрировал два приложения в своем Azure AD. Один для Swagger и один для основного приложения Back end .Net. Ниже мой код.
services.AddSwaggerGen(c =>
{
c.SwaggerDoc("v1", new Info { Title = "My API", Version = "v1" });
c.AddSecurityDefinition("oauth2", new OAuth2Scheme
{
Type = "oauth2",
Flow = "implicit",
AuthorizationUrl = swaggerUIOptions.AuthorizationUrl,
TokenUrl = swaggerUIOptions.TokenUrl
});
c.AddSecurityRequirement(new Dictionary<string, IEnumerable<string>>
{
{ "oauth2", new[] { "readAccess", "writeAccess" } }
});
});
В приведенном выше коде я указываю тип и поток. Также указывается AuthorizationUrl и URL-адрес токена. При переходе к областям действия, если я добавляю области действия, это означает, что у моего Swagger есть доступ к добавленным областям или у моего back-end api есть доступ к этим областям? Тогда у меня есть код ниже.
c.OAuthClientId(swaggerUIOptions.ClientId);
c.OAuthClientSecret(swaggerUIOptions.ClientSecret);
c.OAuthRealm(azureActiveDirectoryOptions.ClientId);
c.OAuthAppName("Swagger");
c.OAuthAdditionalQueryStringParams(new { resource = azureActiveDirectoryOptions.ClientId });
c.SwaggerEndpoint("/swagger/v1/swagger.json", "My API V1");
Когда мы разрабатываем Swagger, мы получаем токен доступа для приложения Swagger или серверного приложения? Также у меня есть c.OAuthRealm и я передаю идентификатор клиента серверного приложения. Что на самом деле делает эта строка кода? Также, когда я добавляю атрибут [Authorize] в верхней части моего API, а затем, если я пытаюсь напрямую нажать api, это не сработает. Он будет работать только после аутентификации. Итак, как именно работает атрибут Authorize? Может ли кто-нибудь помочь мне разобраться в этих вещах? Любая помощь будет оценена по достоинству. Спасибо