gpt4 book ai didi

azure - 在隐式流的情况下是否可以在 JWT token 中包含组?

转载 作者:行者123 更新时间:2023-12-03 01:35:45 26 4
gpt4 key购买 nike

您好,我正在开发 Azure AD 和 .net core 应用程序。我正在尝试实现身份验证和授权。我使用 .net core 应用程序配置了 swagger。我可以使用 swagger 进行身份验证。目前我加入了大约 100 个团体。我正在使用隐式授权流程进行 swagger 身份验证。根据我浏览过的文档,

如果组数超过 5 个,则 JWT token 将包含 "hasgroups": "true"和 - 就我而言,我可以在 JWT token 中看到 "hasgroups": "true"。

如果使用 Azure AD Connect 将组同步到 Azure AD,则可以显示组名称 - 在我的例子中,使用 Azure AD Connect 同步到 Azure AD,但我看不到 ID 或名称。

我有超过 100 个组,因此由于 url 限制,当我们使用隐式流时无法获取组。

另外,如果我只有后端 API,在这种情况下建议使用哪种授权流程? API 对调用应用程序一无所知。

在隐式流程中,将仅调用 azure ad 来获取访问 token ,而在授权授予流程中,将有两个调用,一个用于获取授权代码,然后使用授权代码获取访问 token 。这是我的理解。我不确定我是否理解正确。有人可以帮助我理解以上两点吗?我对以上两点感到有些困惑。在这方面的任何帮助将不胜感激。谢谢

下面是我的 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" } }
});
});

在配置中,

  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");
});

最佳答案

如果用户有太多组,它们将不会出现在访问 token 中。由于 token 是在 URL 中返回的,因此隐式流的限制较小。

在这些情况下,您的后端需要通过 Microsoft Graph API 检查组成员身份。

关于azure - 在隐式流的情况下是否可以在 JWT token 中包含组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58214060/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com