2017-08-31 48 views
0

我正在实施具有IDP启动流程的SAML 2.0的SSO。使用第三方IDP不是一种选择,我们将不得不使用Windows Server 2012R2附带的ADFS 3.0。 我们有一个CRM工具,用户使用他们的AD帐户进行身份验证。当用户尝试访问另一个系统中的客户的帐户详细信息时,IDP必须传递客户的用户名(这存储在SQL服务器数据库中)。我的问题是,我们有没有办法将这些详细信息包含在我们发送给SP的SAML 2.0响应中。我的理解是,如果我们使用ADFS,我们发送给SP的所有声明详细信息都应来自AD。这是不是这样吗? 如果没有,我可以在将代码(C#)中的SAML 2.0响应中的声明详细信息发送给SP之前进行任何控制?我认为发送SAML 2.0是由ADFS完成的,我的应用程序逻辑无法控制使用ADFS 3.0在SAML 2.0响应中从SQL Server(不从Active Directory)添加声明详细信息

编辑:我做了更多的研究,发现这个帖子authentication against ADFS, authorization against sql server这看起来好像是拉取登录用户的凭证。我的情况是,我需要根据用户选择的账号从另一个数据库获取客户的用户信息。是否有办法做到这一点?

这里是用例

  1. 内部用户(用户)登录到我们的AD证书
  2. 搜索客户的CRM应用程序,并找到一个帐号为客户
  3. 用户试图访问此用户的帐户详细信息SP
  4. 用户被带到SP URL(客户的用户名作为查询字符串获得通过)
  5. SP向IDP(I as sume这是 里面的一个帖子与RelayState和base64编码
  6. 我应该创建一个Web API来捕获这个并获得RelayState并通过WIF卸载它到ADFS吗?
  7. 如果步骤6是可行的,我可以从ADFS获得生成的SAML响应,将其加密并将其发回给SP?如果步骤6不可行,ADFS是否将带有加密数据的SAML响应发送回SP?
  8. 此外,是否有一个需要包装SAML请求和响应内的网页sso的表单html元素?

sso_workflow

任何帮助,将不胜感激

回答

1

按照链接,你可以从SQL数据库的授权属性。

这是通过声明规则。

没有什么能阻止你有一个以上的SQL数据库,并从每个

这些属性都添加为SAML令牌声明获得不同的属性。

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

+0

谢谢@ nzpcmad.I也想知道我的端点应该接受来自SP的saml 2.0(HTTP POST)请求。此链接https://en.wikipedia.org/wiki/SAML_2.0(section SP发布请求和IDP发帖回复部分)表示,这个来自SP的请求将是一个

的帖子。我应该创建一个web api端点以从SP捕获此POST,解压缩并通过WIF将其卸载到ADFS 3.0?我假设一旦我将它卸载到ADFS 3.0,它将加密SAML 2.0响应(如果我配置它)并发送给SP? –

+0

或者有什么方法可以让ADFS向我返回SAML 2.0响应,我将其加密并将其包装在中并将其发送给SP? –

+0

用一个用例来更新您的问题,该用例逐步介绍您在高层尝试执行的操作。我有点困惑。 – nzpcmad