使用 ADFS 3.0 在 SAML 2.0 响应中添加来自 SQL 服务器(而非来自 Active Directory)的声明详细信息

Adding claim details from SQL Server (Not from Active Directory) in SAML 2.0 Response using ADFS 3.0

我正在使用 SAML 2.0 实现 SSO,并启动 IDP flow.Use 第三方 IDP 不是一个选项,我们将不得不使用 Windows Server 2012R2 附带的 ADFS 3.0。 我们有一个 CRM 工具,用户使用他们的 AD account.When 进行身份验证用户试图在另一个系统中访问我们客户的帐户详细信息,IDP 必须传递客户的用户名(这存储在 SQL服务器数据库)。我的问题是,我们是否可以通过任何方式在我们发送给 SP.My 的 SAML 2.0 响应中包含该详细信息,理解是我们发送给 SP 的所有声明详细信息都应来自 AD,如果我们正在使用 ADFS.Is 这不是吗? 如果没有,在将其发送给 SP 之前,我是否可以控制在代码(C#)中修改 SAML 2.0 响应中的声明详细信息?我认为发送 SAML 2.0 是由 ADFS 完成的,我的应用程序逻辑无法控制它

编辑:我做了更多研究并发现了这个 SO post 这似乎是在拉取登录用户的凭据。在我的例子中,我需要获取用户信息来自另一个数据库的客户基于帐户#用户 selects.Is 有办法做到这一点吗?

这是用例

  1. 内部用户(用户)使用 AD 凭据登录我们的 CRM 应用程序
  2. 搜索客户并找到客户的帐户#
  3. 用户试图在 SP
  4. 上访问此客户的帐户详细信息
  5. 用户被带到 SP url(客户的用户名作为查询字符串传递)
  6. SP 向 IDP 发出 HTTP POST SAML 身份验证请求(我假设这是 在具有 RelayState 和 base64 编码的 post 中
  7. 我应该创建一个网络 api 来捕获它并获取 RelayState 并通过 WIF 将它卸载到 ADFS 吗?
  8. 如果第 6 步可行,我能否从 ADFS 获取生成的 SAML 响应,对其进行加密并将其发送回 SP?如果第 6 步不可行,ADFS 是否会将带有加密数据的 SAML 响应发送回SP?
  9. 是否还需要将 SAML 请求和响应包装在用于 Web sso 的表单 html 元素中?

如有任何帮助,我们将不胜感激

根据link,您可以从SQL数据库中获取属性以进行授权。

这是通过声明规则。

没有什么能阻止您拥有多个 SQL 数据库并从每个数据库中获取不同的属性

这些属性都作为声明添加到 SAML 令牌中。

您也可以使用正常的声明规则操作。