Привет! Я работаю над Azure AD и основным приложением .net. Я пытаюсь реализовать аутентификацию и авторизацию. Я настроил swagger с моим основным приложением .net. Я могу сделать аутентификацию, используя чванство. В настоящее время у меня есть около 100 групп, частью которых я являюсь. Я использую неявный поток грантов для проверки подлинности. Согласно документациям, которые я прошел,
Если существует более 5 групп, токен JWT будет включать в себя «hasgroups»: «true» и - в моем случае я могу видеть «hasgroups»: «true»в токене JWT.
Если группа синхронизируется с Azure AD с помощью Azure AD Connect, вы можете отобразить имя группы - В моем случае синхронизироваться с Azure AD с помощью Azure AD Connect, но я не могу видеть ни идентификаторы, ни имена.
У меня более 100 групп, поэтому из-за ограничения URL невозможно получить группы, когда мы используем неявный поток.
Кроме того, если у меня есть только бэкэнд-API, то в каком случае рекомендуется использовать поток авторизации? API ничего не будет знать о вызывающем приложении.
В неявном потоке будет только вызов Azure для получения токена доступа. В потоке авторизации будет два вызова: один для получения кода авторизации, а затем с использованием кода авторизации для получения токена доступа. Это моё понимание. Я не уверен, правильно ли я понял это или нет. Может ли кто-нибудь помочь мне понять выше два пункта? У меня есть некоторая путаница по поводу вышеупомянутых двух пунктов. Любая помощь будет оценена в этом отношении. Спасибо
Ниже моя реализация чванства.
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,
Scopes = new Dictionary<string, string>
{
{"Read", "guid/.default" }
}
});
c.AddSecurityRequirement(new Dictionary<string, IEnumerable<string>>
{
{ "oauth2", new[] { "readAccess", "writeAccess" } }
});
});
В Configure,
app.UseSwaggerUI(c =>
{
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");
});