当前位置: 首页 > 知识库问答 >
问题:

实施SAML 2.0作为服务提供商,ASP.NET4.5

鲁俊友
2023-03-14

我很难从各种渠道获得关于如何修改我现有的ASP.NET应用程序(非MVC,如果这很重要的话——基于基于表单的认证的旧web表单)的明确指导,以接受通过SAML的单点登录用户。具体来说,我们希望连接到俄克拉荷马州。我已经让OpenID Connect与Okta一起工作,但是我们的客户特别希望通过Okta使用SAML。我们也希望在未来通过SAML支持其他身份提供者。

我已经在Okta中设置了应用程序,并获得了我的x509证书和元数据,但是我很难从那里开始。我读过很多相互矛盾的信息——一些消息来源说SAML2是内置的。Net 4.5和更高版本,但其他人说它不支持SAML2协议,我还没有找到它不与Azure和ADFS紧密绑定的好例子。我看过这个回购,但显然它不支持SHA256,这是我从Okta得到的。此外,关于该库的文档非常缺乏。我在互联网上搜索的大多数内容似乎都是关于如何在. net上通过SAML实现SSO的过时或矛盾的信息。

Okta 自己的文档专注于 OIDC 或他们自己的 API,将 SAML 实现留给集成商。

有人能给我举一些当前ASP.Net SSO使用SAML2的例子吗?最好是一个web窗体应用程序,而不是MVC。

提前感谢您。

共有1个答案

段兴为
2023-03-14

一天结束时,您所要做的就是在您的应用程序中提供一个新的SAMLendpoint并处理进出的东西。它所做的就是检测用户是否在您的应用程序中有会话。如果没有,请使用SAMLRequest将他们重定向到他们的IdP,并等待浏览器使用SAMLACK返回您的ACS(属性消费者服务)endpoint。如果SAMLACK中的属性足够,请将用户登录到您的应用程序中。

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过程。

所以这个过程或多或少是:

    < li >用户访问您/sso?entityID=blah endpoint < li >加载entityID的SAML元数据并获取SSO URL < li >使用表单中编码的SAMLRequest将浏览器重定向到SSO URL < li >在ACSendpoint上接收来自IdP的带有编码SAMLResponse的浏览器 < li >解析SAMLResponse以获取SAML属性并检查它们的适用性 < li >让用户登录

您将需要您打算使用的每个IdP的SAML元数据,当您充当SP(服务提供商)时,他们将需要您的应用程序的SAML数据。

 类似资料:
  • 我必须在具有OpenSAML2.5.1(旧版本的cas)的代码库上实现SAML2.0,不幸的是,我无法使用spring saml安全扩展(它使用了新版本的opensaml)。我已经研究了spring扩展如何处理授权请求/响应,并在一定程度上对其进行了反向工程。我能够从sp呼叫idp(sso圈)并尝试登录,但在提交时出现500个错误:原因:无法进行单点登录或联合。 是否有任何示例java opens

  • 问题内容: 这是我的基本模块,需要myspi包中定义的接口的实现。各种提供程序都可以提供MyProvider实现。基本模块通过myspi.MyProvider接口实现使用它们。 这是我的示例实现模块,该模块为MyProvider实现提供MyProviderImpl 当我在基本模块中加载实现时,所有这些工作正常 但是相同的代码在Junit 5测试代码中返回空列表(ServiceLoader返回nul

  • 问题内容: 这是我的基本模块,需要myspi包中定义的接口的实现。各种提供程序都可以提供MyProvider实现。基本模块通过myspi.MyProvider接口实现使用它们。 这是我的示例实现模块,该模块为MyProvider实现提供MyProviderImpl 当我在基本模块中加载实现时,所有这些工作正常 但是相同的代码在Junit 5测试代码中返回空列表(ServiceLoader返回nul

  • 我正在我的服务中添加SSO功能,以允许客户使用他们的广告帐户登录。为此,我使用componentpro中的SAML组件。com执行安全交互的正确方法是什么: < li >从IdP方面:除了IdP url,客户还应该向我的服务提供什么?任何只包含公钥的证书? < li >从服务提供商的角度:我应该向客户提供什么? < li >选择的SAML工具使用证书对发送给IdP的SAML请求进行签名,并对来自I

  • 我正在使用SimpleSAMLPhp服务提供商实现SSO。 我提供了我的元数据远程Shibboleth身份提供者,并提供了一个测试帐户。 当用户访问我的SP上的特定页面时,他们会被重定向到IdP、登录,并使用IdP提供的一组属性重定向回我的网站。这部分工作正常。 这部分我正在努力。 如果用户通过不同的服务提供商使用相同的IdP进行身份验证,然后访问我的页面,我怎么知道他们已经通过身份验证?目前我被