[嗨,我正在研究Azure AD。我有一个webapi项目,并且配置了它。我在天蓝色广告中拒绝了两个应用。一种用于招摇,一种用于webapi应用。现在,我想基于组实施授权。所以现在我想从Microsoft图形API调用组。从这里开始,我感到困惑。要访问组,我需要授予在我的azure Ad swagger应用程序或webapi应用程序中读取图形的权限?
下面是我的代码。
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上执行基于组的授权?有人可以帮我吗?
确定。我想我有您的想法。
您想根据用户所属的组为他们提供访问Web API的权限。正确吗?
因此,您需要调用Microsoft图以查看用户位于哪个组中。
在这种情况下,您应该从Web API应用程序调用Microsoft图。 (不是草率的应用程序)
但是,不必这么复杂。
正如我在评论中提到的,您可以直接获取用户包含在jwt令牌中的组。
您可以按照here的说明在您的令牌中包含网上论坛索赔。您只需要在Web api应用程序的应用程序清单中修改“ groupMembershipClaims”字段:
"groupMembershipClaims": "SecurityGroup"
然后令牌将包含使用所属的组的ID,如下所示:
{
"groups": ["1ce9c55a-9826-4e32-871c-a8488144bb32"]
}
然后您可以根据用户的组ID实施授权逻辑。