Azure 在隐式流的情况下,是否可以在JWT令牌中包含组?
嗨,我正在Azure广告和.net核心应用程序上工作。我正在尝试实现身份验证和授权。我已经用我的.net核心应用程序配置了swagger。我能够使用swagger进行身份验证。目前,我参加了大约100个团体。我正在使用隐式授权流进行炫耀式身份验证。根据我看过的文件 如果有超过5个组,那么JWT令牌将包括“hasgroups”:“true”;-在我的例子中,我可以在JWT令牌中看到“hasgroups”:“true” 如果使用Azure AD Connect将组同步到Azure AD,则可以显示组名-在我的情况下,使用Azure AD Connect将组同步到Azure AD,但我无法查看ID或名称 我有100多个组,所以当我们使用隐式流时,由于url限制,不可能获得组 另外,如果我只有后端API,在这种情况下,建议使用哪个授权流?API对调用应用程序一无所知 在隐式流中,只有对azure ad的调用才能获取访问令牌,而在授权授予流中,将有两个调用,一个调用获取授权代码,然后使用授权代码获取访问令牌。这是我的理解。我不确定我是否正确理解了这一点。 有人能帮我理解以上两点吗?我对以上两点有些困惑。在这方面如有任何帮助,将不胜感激。谢谢 下面是我大摇大摆的实现Azure 在隐式流的情况下,是否可以在JWT令牌中包含组?,azure,oauth-2.0,azure-active-directory,swagger,Azure,Oauth 2.0,Azure Active Directory,Swagger,嗨,我正在Azure广告和.net核心应用程序上工作。我正在尝试实现身份验证和授权。我已经用我的.net核心应用程序配置了swagger。我能够使用swagger进行身份验证。目前,我参加了大约100个团体。我正在使用隐式授权流进行炫耀式身份验证。根据我看过的文件 如果有超过5个组,那么JWT令牌将包括“hasgroups”:“true”;-在我的例子中,我可以在JWT令牌中看到“hasgroups”:“true” 如果使用Azure AD Connect将组同步到Azure AD,则可以显示组
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" } }
});
});
如果用户有太多的组,它们将不在访问令牌中。 隐式流的限制较小,因为标记在URL中返回
在这些情况下,您的后端需要通过Microsoft Graph API检查组成员身份。Hi Junnas。谢谢我可以得到任何链接到msdn为上述?谢谢,这里提到了:。通过图形API获取用户组:目前我在JWT令牌中没有获取组ID或组名称,我在JWT令牌中获取“hasgroups”:“true”。这意味着我必须使用图形api来调用组信息。如果它是同步的,那么我也不会得到组的详细信息。我只得到“hasgroups”:“true”。在您共享的url中,他们提到了200个组作为JWT令牌。这是使用隐式流还是授权流?在隐式流中,JWT令牌将位于url中,因此JWT令牌可以包含200个令牌?我更新了我的问题,只是想知道我是否只有后端API,在这种情况下,建议使用哪个授权流?同样,对于swagger,我们可以使用授权流而不是隐式流吗?
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");
});