你好我正在研究Azure AD和.net核心應用程式.我正在嘗試實現身份驗證和授權.我已經使用我的.net核心應用程式配置了swagger.我能夠使用swagger進行身份驗證.目前我有大約100個組,我是其中的一部分.我正在使用隱式贈款流來進行swagger身份驗證.根據文件,我已經經經歷了,
如果有超過5個組,那麼JWT令牌將包含“hasgroups”:“true”和 – 在我的情況下,我能夠在JWT令牌中看到“hasgroups”:“true”.
如果組使用Azure AD Connect與Azure AD同步,則可以顯示組名 – 在我的情況下,使用Azure AD Connect與Azure AD同步,但我無法看到id或名稱.
我有超過100個組,因此由於url限制,當我們使用隱式流時無法獲得組.
在隱式流中,只會呼叫azure ad來獲取Access令牌,在授權授權流中,將有兩個呼叫一個來獲取授權程式碼,然後使用授權程式碼來獲取訪問令牌.這是我的理解.我不確定如果我正確理解這一點. 有人可以幫助我理解上述兩點嗎?我對上述兩點感到困惑.在這方面任何幫助將不勝感激.謝謝
下面是我的swagger實現.
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");
});