gpt4 book ai didi

openid-connect - 通过OpenID Connect over ADFS声明的用户组

转载 作者:行者123 更新时间:2023-12-01 22:52:30 26 4
gpt4 key购买 nike

我需要帮助弄清楚如何通过ADFS(Windows Server 2016)上的OpenID Connect获取用户的分配组。我目前能够对用户进行身份验证,并获取包括access_token在内的用户信息。当我检查JWT token 时,可以在其中看到所有默认声明。我想要的是将所有用户分配的系统组作为字符串数组添加到声明中,但是我不知道如何实现此目的。 ADFS和Windows Server简直是野兽,来自Google的所有搜索结果都无法引导我朝正确的方向发展。我发现的所有文章都是没有用的,因为它们要么步骤不完整,要么如果您没有受过整个ADFS-shebang的教育,则很难遵循。

我在这个问题上已经停留了几天,需要一些帮助,希望那里有人对此有所了解。

到目前为止,我所做的是:

  • 我已向ADFS添加了一个应用程序组,其中包含一个“服务器应用程序”和一个“Web API”。
  • 我添加了一个名为Admin的用户组,并将其分配给了一个名为max的用户。
  • 我可以通过ADFS上的OpenID Connect登录并从userinfo-endpoint获取用户信息。
  • 我已经能够解码access_token来访问声明。

  • 我目前正在使用范围“openid”,“email”和“profile”进行身份验证。

    最佳答案

    我们刚刚完成了所有工作,所以我想如果其他人想做我们想做的事情,我会分享我们所做的事情。

    先决条件

    为了能够执行以下步骤,您需要具有启用了“Active Directory联合身份验证服务(ADFS)”功能的Windows Server 2016或更高版本。

    向ADFS添加OpenID Connect配置

  • 打开服务器管理器右上方“工具”菜单下的“AD FS管理”工具。
  • 在左侧栏中选择“应用程序组”文件夹项。
  • 单击右侧边栏中的“添加应用程序组...”。
  • 为应用程序组命名,例如“OpenID Connect”
  • 选择“访问Web API的服务器应用程序”列表项,然后单击“下一步”。
  • 客户端标识符复制并粘贴到文本文件中,以备后用。
  • 输入您的身份验证“重定向URI”,然后单击“下一步”。
  • 选中“生成共享机密”框。将秘密复制并粘贴到文本中,以供您的应用程序使用。点击下一步。
  • 粘贴并将客户端标识符(来自第6步)添加为“标识符”。点击下一步。
  • 选择您要使用的访问控制策略,然后单击下一步。
  • 确保选中“openid”旁边的框。
  • 单击底部的“新作用域...”按钮,并将其命名为“allatclaims”,然后单击“确定”。需要此范围来提供其他信息作为权利要求,例如用户的组。
  • 完成向导。

  • 配置OpenID Connect以提供用户组作为声明
  • 打开服务器管理器右上方“工具”菜单下的“AD FS管理”工具。
  • 在左侧栏中选择“应用程序组”文件夹项。
  • 双击之前添加的组,然后双击“Web API”应用程序。
  • 选择名为“签发转换规则”的选项卡。
  • 单击底部的“添加规则...”按钮。
  • 选择“将LDAP属性发送为声明”,然后单击“下一步”。
  • 为规则命名,例如“Roles”。
  • 选择“ Activity 目录”作为“属性存储”。
  • 在下表中,在第一列中选​​择“ token 组不合格名称”,然后在第二列中键入“角色”。

  • 配置OpenID Connect以提供特定的用户组作为声明
  • 打开服务器管理器右上方“工具”菜单下的“AD FS管理”工具。
  • 在左侧栏中选择“应用程序组”文件夹项。
  • 双击之前添加的组,然后双击“Web API”应用程序。
  • 选择名为“签发转换规则”的选项卡。
  • 删除您可能已经添加的所有规则。
  • 单击底部的“添加规则...”按钮。
  • 选择“使用自定义规则发送声明”,然后单击下一步。
  • 为规则指定名称“StoreRoles”,并将以下内容粘贴到“自定义规则”字段中:
  • c:[Type ==“http://schemas.microsoft.com/ws/2008/06/identity/claims/windowsaccountname”,Issuer ==“AD AUTHORITY”] => add(store =“Active Directory”,类型=(“角色”),query =“; tokenGroups; {0}”,参数= c.Value);
  • 单击完成,然后添加另一个规则。
  • 再次选择“使用自定义规则发送声明”,然后单击“下一步”。
  • 将此规则命名为“IssueRoles”,并将以下内容粘贴到“自定义规则”字段中:
  • c:[Type ==“roles”,Value =〜“^ Prefix。+”] => issue(claim = c);
  • 包含// // “^ Prefix。+”的部分 //是一个正则表达式,用于过滤作为声明的一部分发送的Windows组。在这种情况下,我们仅接受以“Prefix”开头的Windows组。调整它以满足您的需求。
  • 单击完成。
  • 关于openid-connect - 通过OpenID Connect over ADFS声明的用户组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55494354/

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