API权限与Azure AD中的公开API有什么区别?

问题描述 投票:0回答:1

[嗨,我正在研究Azure AD。我有一个webapi项目,并且配置了它。我在天蓝色广告中拒绝了两个应用。一种用于招摇,一种用于webapi应用。现在,我想基于组实施授权。所以现在我想从Microsoft图形API调用组。从这里开始,我感到困惑。要访问组,我需要授予在我的azure Ad swagger应用程序或webapi应用程序中读取图形的权限? Swagger Authentication

下面是我的代码。

c.AddSecurityDefinition("oauth2", new OAuth2Scheme
                {
                    Type = "oauth2",
                    Flow = "implicit",
                    AuthorizationUrl = swaggerUIOptions.AuthorizationUrl,
                    TokenUrl = swaggerUIOptions.TokenUrl,
                    Scopes = new Dictionary<string, string>
                    {
                      { "read_user_groups", "https://graph.microsoft.com/Group.Read.All" }
                    }
                });

现在在azure广告中,我具有API权限和Expose API。

在我注册应用程序时使用的草率应用程序中,我具有API权限,并且添加了Microsoft Graph并选择了Groups.Read All。然后,我有了Expose API,我们可以添加范围。这两件事使我感到困惑。我的swagger应用必须在我的Web api上执行基于组的授权?有人可以帮我吗?

azure azure-active-directory authorization swagger
1个回答
0
投票

确定。我想我有您的想法。

您想根据用户所属的组为他们提供访问Web API的权限。正确吗?

因此,您需要调用Microsoft图以查看用户位于哪个组中。

在这种情况下,您应该从Web API应用程序调用Microsoft图。 (不是草率的应用程序)

但是,不必这么复杂。

正如我在评论中提到的,您可以直接获取用户包含在jwt令牌中的组。

您可以按照here的说明在您的令牌中包含网上论坛索赔。您只需要在Web api应用程序的应用程序清单中修改“ groupMembershipClaims”字段:

"groupMembershipClaims": "SecurityGroup"

然后令牌将包含使用所属的组的ID,如下所示:

{
  "groups": ["1ce9c55a-9826-4e32-871c-a8488144bb32"]
}

然后您可以根据用户的组ID实施授权逻辑。

© www.soinside.com 2019 - 2024. All rights reserved.