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

标签 azure oauth-2.0 azure-active-directory swagger

您好,我正在开发 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/

相关文章:

azure - 如果在创建 Azure VM 时使用 VM 应用程序,则应用程序的静默安装将无法安装驱动程序

azure-active-directory - Cypress AzureAD 身份验证自动化

没有电子邮件的 Azure B2C 用户流

azure-active-directory - 使用 MSAL 实现 AAD 身份验证时,我将使用 navigateToLoginRequestUrl 选项做什么?

azure - Azure 上的 Orchard 入门

list - Terraform,创建 map ,其中列表元素是值

azure - 将连续的非零行标记到不同的分区中,这次使用 kusto(Azure AppInsights 的查询语言)

java - Google使用Oauth2. 0 auto 登录多个帐户

spring-boot - Spring Security Oauth oauth2UserService(适用于 github 但不适用于 google)

security - kafka中如何实现OAUTHBEARER SASL认证机制?