gpt4 book ai didi

authentication - 使用单点登录和 ADFS 从 SAML 响应中获取电子邮件地址

转载 作者:行者123 更新时间:2023-12-04 05:56:49 24 4
gpt4 key购买 nike

我正在使用 ADFS 和 SAML 2.0 设置单点登录 (SSO) 系统。我必须遵循我坚持的场景:

1) 用户尝试访问 Web 资源,但未登录,因此被定向到 ADFS SSO 服务。

2) 用户成功通过 ADFS 身份验证。

3) ADFS 将 SAML 响应传递回 Web 资源。

4)web资源本身有用户数据库,但是这里不存在用户。

5)因此,网络资源必须静默创建用户帐户。为此,我需要电子邮件地址。

那么,是否可以将 ADFS 配置为在成功的 SAML 响应消息中返回用户的电子邮件地址?

最佳答案

您可以将 ADFS 配置为返回电子邮件声明,前提是 ADFS 有某种获取方式(Active Directory 或其他一些属性存储,也许是它可以访问的数据库?)并且您的应用程序设置为解密返回的 token 以读取里面的 claim 。

假设这是 ADFS 2.0:

  • 将您的网络资源设置为依赖方信任(听起来您已经这样做了)
  • 右键单击 RP 并选择 编辑声明规则...
  • 在颁发转换规则选项卡上,为电子邮件地址
  • 添加新规则

    如果您可以从 Active Directory 获取电子邮件,因为您的用户正在通过域进行身份验证,那么您可以选择“将 LDAP 属性作为声明发送”规则模板。

    否则,您必须选择“使用自定义规则发送声明”并设置自定义属性存储(到数据库或其他任何内容),然后通过编写声明规则来执行此操作。

    设置完成后,您需要在 ASP.NET 应用程序中将其配置为使用 ADFS 作为 token 颁发者。这是通过 Windows Identity Framework 完成的Microsoft.IdentityModel.dll 和相关配置。如果您已经安装了 WIF SDK ,你应该在 Visual Studio 中有一些额外的选项,即如果你右键单击你的 web 项目,应该有一个“添加 STS 引用”选项。这将运行 FedUtil,该向导将自动适本地设置您的 web.config。谷歌一下如何设置。

    现在您的站点使用 ADFS 进行声明,您需要进行一些更改。下 <microsoft.identityModel>在您的 web.config 部分,确保您已将其设置为保存引导 token ( <service saveBootstrapTokens="true"> )。在您的代码中,您现在可以通过执行以下操作随时访问电子邮件声明:
    string email = (User.Identity as IClaimsIdentity).Claims.Where(c => c.ClaimType == ClaimTypes.Email).FirstOrDefault().Value;

    如果您不将其设置为保存引导 token ,则那里的 Claims 集合将为空。

    不过,可能还有很多其他因素可能会在此过程中造成困惑。希望这能让你走上正轨。

    关于authentication - 使用单点登录和 ADFS 从 SAML 响应中获取电子邮件地址,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9415002/

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