我很难从各种来源获得有关如何修改现有ASP.NET应用程序的明确指导(非MVC,如果重要的话 - 基于表单的身份验证的旧Web表单),以通过SAML接受单点登录用户。具体来说,我们希望连接到Okta。我已经让OpenID Connect与Okta合作,但我们的客户特别希望通过Okta获得SAML。我们还希望将来通过SAML支持其他身份提供商。
我已经在Okta中设置了应用程序并获得了我的x509证书和元数据,但我很难从那里开始。我已经阅读了很多相互矛盾的信息 - 有些消息称SAML2内置于.Net 4.5及更高版本,但有些人说它不支持SAML2协议,而且我没有发现它没有很好的例子Azure和ADFS。我看过this repo,但显然它不支持SHA256,这是我从Okta那里得到的。该库的文档也非常缺乏。我的大多数互联网搜索似乎都发现了如何通过.Net上的SAML实现SSO的过时或冲突的信息。
Okta自己的文档主要关注OIDC或他们自己的API,将SAML实现留给集成商。
有人可以向我指出一些使用SAML2的ASP.Net SSO的当前示例吗?优选地,web形成app而不是MVC。
提前谢谢。
答案 0 :(得分:1)
在一天结束时,您所要做的就是在应用中提供新的SAML端点并处理进出的内容。它只是检测用户是否在您的应用程序中有会话。如果没有,请使用SAMLRequest将它们重定向到其IdP,并等待浏览器使用SAMLResponse返回到ACS(属性使用者服务)端点。如果SAMLResponse中的属性足够,请将用户登录到您的应用程序中。
SAML对登录,会话或类似应用程序的内容一无所知。它只是一个用于管理登录等的XML包。
使用用户名/密码登录的常用方法如下:
https://yourapp.com/login
所以SAML可能是:
https://yourapp.com/sso
支持多个身份提供者,添加一个entityID参数:
https://yourapp.com/sso?entityID=https://some.idp.com/shibboleth
您从其元数据加载IdP的登录页面URL,您使用entityID参数加载该元数据。将浏览器发送到该URL以启动SAML过程。
所以这个过程或多或少:
您需要为您打算使用的每个IdP提供SAML元数据,并且当您充当SP(服务提供商)时,他们将需要您的应用的SAML元数据。