我是 SAML 协议的新手,我需要使用与本地用户数据库连接的 SimpleSamlPHP 创建一个 IdP。然后我必须在asp.net web forms/mvc(最好是asp.net mvc)中创建一个SP。我设法将 SimpleSamlPHP 设置为 IdP,并使用默认的 saml-sql 身份验证源/登录页面连接到本地用户数据库。正如所见:

用户登录后,将返回默认的 SimpleSAMLPhp 消费者页面。正如所见:

我注意到登录 url 包含具有重定向 URL 的 AuthnState。因此: http://localhost:8080/simplesaml/module.php/core/loginuserpass.php?AuthState=_6ecd0987b485b771d67a5ddbd62ca4b22913a12fb6%3Ahttp%3A%2F%2Flocalhost%3A8080%2Fsimplesaml%2Fmodule.php%2Fcore%2Fas_login.php%3FAuthId %3Dsaml-sql%26ReturnTo%3Dhttp%253A%252F%252Flocalhost%253A8080%252Fsimplesaml%252Fmodule.php%252Fcore%252Fauthenticate.php%253Fas%253Dsaml-sql
其中: ReturnTo%3Dhttp%253A%252F%252Flocalhost%253A8080%252Fsimplesaml%252Fmodule.php%252Fcore%252Fauthenticate.php%253Fas%253Dsaml-sql
大概是指定返回 url 的地方,并且 authnstate 是由 SimpleSAMPPhp 动态生成的。
有了这个,我需要创建一个 asp.net webform/MVC(最好是 asp.net mvc)项目,该项目将是一个 SP,将用户重定向到 simpleSAMLPhp 登录页面页面,并且还将指定在 AuthnState 参数中找到的所有参数包括重定向到 asp.net 项目的消费者页面。我通过互联网搜索,发现 WIF 不支持 SAML 协议并找到其他框架/库进行测试。我目前正在尝试实施 OneLogin 以创建一个 asp.net SP @ https://onelogin.zendesk.com/hc/en-us/articles/201175694-SAML-Toolkit-for-C-and-ASP-NET并遵循页面中描述的说明。我做了以下事情:
- 更改 AccountSettings.certificate 中的配置以匹配 SimpleSamlPhp 中的 IdP 元数据证书
- 将 AccountSettings.idp_sso_target_url 中的配置更改为 SimpleSamlPhp 登录网址:http://localhost:8080/simplesaml/module.php/core/loginuserpass.php
当我启动项目时,登录 url 生成为: http://localhost:8080/simplesaml/module.php/core/loginuserpass.php?SAML 请求=PHNhbWxwOkF1dGhuUmVxdWVzdCBJRD0iXzU5YTIxN2I0LTg1MGUtNDhiNy05YTU1LWVkMzU3M2U3MzUyNSIgVmVyc2lvbj0iMi4wIiBJc3N1ZUluc3RhbnQ9IjIwMTUtMDEtMjFUMDc6MTM6NTlaIiBQcm90b2NvbEJpbmRpbmc9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDpiaW5kaW5nczpIVFRQLVBPU1QiIEFzc2VydGlvbkNvbnN1bWVyU2VydmljZVVSTD0iaHR0cDovL2xvY2FsaG9zdDo0OTU3My9TYW1sQ29uc3VtZXIvQ29uc3VtZS5hc3B4IiB4bWxuczpzYW1scD0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOnByb3RvY29sIj48c2FtbDpJc3N1ZXIgeG1sbnM6c2FtbD0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmFzc2VydGlvbiI%2bdGVzdC1hcHA8L3NhbWw6SXNzdWVyPjxzYW1scDpOYW1lSURQb2xpY3kgRm9ybWF0PSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6bmFtZWlkLWZvcm1hdDp1bnNwZWNpZmllZCIgQWxsb3dDcmVhdGU9InRydWUiIC8%2bPHNhbWxwOlJlcXVlc3RlZEF1dGhuQ29udGV4dCBDb21wYXJpc29uPSJleGFjdCIgLz48c2FtbDpBdXRobkNvbnRleHRDbGFzc1JlZiB4bWxuczpzYW1sPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6YXNzZXJ0aW9uIj51cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6YWM6Y2xhc3NlczpQYXNzd29yZFByb3RlY3RlZFRyW5zcG9ydDwvc2FtbDpBdXRobkNvbnRleHRDbGFzc1JlZj48L3NhbWxwOkF1dGhuUMVxdWVzdD4%3d
它在 SimpleSamlPHP 中作为错误页面返回:

我注意到 asp.net SP 生成的 url 与 saml-sql SimpleSamlPhp 页面生成的格式(过滤器)不同。比如:http://localhost:8080/simplesaml/module.php/core/loginuserpass.php?AuthState=_6ecd0987b485b771d67a5ddbd62ca4b22913a12fb6%3Ahttp%3A%2F%2Flocalhost%3A8080%2Fsimplesaml%2Fmodule.php%2Fcore%2Fas_login.php%3FAuthId% 3Dsaml-sql%26ReturnTo%3Dhttp%253A%252F%252Flocalhost%253A8080%252Fsimplesaml%252Fmodule.php%252Fcore%252Fauthenticate.php%253Fas%253Dsaml-sql
SimpleSamlPhp 登录 url 是如何生成的?如何在 asp.net 中使用 OneLogin 生成相同的 url?我还需要在 OneLogin 中配置或更改哪些内容以匹配 SimpleSamlPhp 所需的 SP 身份验证重定向(参数)?是否有其他框架可用于创建 asp.net webforms/mvc(最好是 asp.net mvc)SP 以连接到 SimpleSamlPhp 登录页面,该登录页面也将重定向到 .net 中的消费者页面(并读取令牌) sp。