【问题标题】:Claim data missing for authenticated users经过身份验证的用户的声明数据丢失
【发布时间】:2021-03-25 15:38:57
【问题描述】:

我们有一个 ASP.NET (Framework v4.7.2) 网站,该网站通过 Azure Active Directory 使用联合登录,用于 SSO 目的,对用户进行身份验证。

网站希望用户位于某个 Active Directory 组中,才能访问该网站。我自己和另一个用户在同一个组中,但是当我们都访问该站点时,我们会得到不同的结果。我可以访问该站点,但我的同事收到“401 unathorised”错误页面(通过AuthorizeAttribute 返回)。

深入研究,我可以将我所属的 AD 组作为声明包含在此集合中

System.Security.Claims.ClaimsPrincipal.Current.Claims

但对于我的同事来说,同样的团体声明不见了。

我有一些调试代码可以做到这一点...

foreach (var claim in System.Security.Claims.ClaimsPrincipal.Current.Claims)
{
    if (string.Equals("the-object-id-of-the-group", claim.Value))
    {
        // User has the group claim...
    }
}

当我登录时,我看到一条日志消息,指出我拥有该组声明,但我的同事在登录时没有看到该消息。

当在 Chrome DevTools 中查看我们对网站的请求时,我可以看到一堆 set-cookie 细节的不同之处。例如,我的请求比我的同事包含更多的AdminFedAuth set-cookie 调用,而我的同事的整体内容长度要短得多。

虽然我的同事是比我更多的 AD 组的成员,但这并没有什么区别,因为可以访问该站点的其他人是比我更多的组的成员。所以我认为这可能是一个人关联的群组数量的问题,但事实并非如此。

我不知道还有什么要调查的,以便诊断问题所在。任何建议将不胜感激。

【问题讨论】:

    标签: asp.net asp.net-mvc azure-active-directory federated-identity


    【解决方案1】:

    答案是我必须更改 Azure Active Directory 中应用注册的清单。

    在我改变的清单中

    "groupMembershipClaims": "SecurityGroup"

    "groupMembershipClaims": "ApplicationGroup"

    使用SecurityGroup 导致返回网站的团体索赔数据不一致。通过使用ApplicationGroup,所有特定于应用程序的组声明都将返回,从而解决了一些经过身份验证的用户无法访问该站点的问题。

    供参考……

    Configure the Azure AD Application Registration for group attributes

    编辑:

    另一个很好的参考是这个 StackOverflow 问题...

    Azure AD does not emit group claims

    【讨论】:

      猜你喜欢
      • 2021-08-12
      • 2017-02-15
      • 1970-01-01
      • 2020-11-15
      • 2016-01-17
      • 2021-09-12
      • 1970-01-01
      • 2020-09-18
      • 1970-01-01
      相关资源
      最近更新 更多