首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >用ASP.NET 4.5+将SAML2.0实现为服务提供者

用ASP.NET 4.5+将SAML2.0实现为服务提供者
EN

Stack Overflow用户
提问于 2018-03-14 20:32:32
回答 1查看 4.6K关注 0票数 1

我很难从各种来源获得明确的指导,如何修改我现有的ASP.NET应用程序(如果这很重要--基于表单身份验证的旧web表单)如何通过SAML在用户上接受单个签名。具体来说,我们正在寻找连接到Okta。我已经得到了OpenID连接与Okta的工作,但我们的客户特别希望通过Okta的SAML。我们还希望通过SAML在未来支持其他身份提供者。

我已经在Okta设置了应用程序,并获得了我的x509证书和元数据,但是从那里开始,我感到很困难。我读过很多相互矛盾的信息--一些消息来源说,SAML2内置于.Net 4.5及以上版本中,但另一些人则表示它不支持SAML2协议,而且我没有找到与Azure和ADFS紧密结合的好例子。我看过这个回购,但显然它不支持SHA256,这就是我从Okta那里得到的。此外,关于该库的文档也非常缺乏。我的大多数互联网搜索似乎发现过时或冲突的信息,如何通过SAML在.Net上实现单点登录。

Okta自己的文档集中在OIDC或它们自己的API上,将SAML实现留给集成器。

有人能告诉我一些ASP.Net SSO与SAML2的当前示例吗?最好是web表单应用程序,而不是MVC。

提前谢谢你。

EN

回答 1

Stack Overflow用户

发布于 2018-03-15 10:24:25

最后,您所要做的就是在应用程序中提供一个新的SAML端点,并处理进出的内容。它所做的就是检测用户在您的应用程序中是否有会话。如果不是,使用IdP将它们重定向到它们的SAMLRequest,然后等待浏览器使用SAMLResponse返回到您的ACS (属性消费者服务)端点。如果SAMLResponse中的属性足够,请将用户登录到应用程序中。

SAML对登录、会话或类似的应用程序一无所知。它只是一个XML包,用来管理登录等等。

使用用户名/密码登录的通常方法如下:

代码语言:javascript
运行
复制
https://yourapp.com/login

因此SAML可能是:

代码语言:javascript
运行
复制
https://yourapp.com/sso

若要支持多个身份提供程序,请添加一个entityID参数:

代码语言:javascript
运行
复制
https://yourapp.com/sso?entityID=https://some.idp.com/shibboleth

从其元数据加载IdP的登录页面URL,使用entityID参数加载元数据。将浏览器发送到该URL以启动SAML进程。

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

  1. 用户访问您的/sso?entityID=blah端点。
  2. 加载entityID的SAML元数据并获取SSO
  3. 用格式编码的SAMLRequest将浏览器重定向到SSO
  4. 从SAMLResponse接收带有编码IdP的ACS端点上的浏览器
  5. 解析SAMLResponse以获取SAML属性并检查它们的适用性
  6. 将用户登录到

您将需要为您打算使用的每个IdP提供SAML元数据,它们将需要您的应用程序的SAML元数据,因为您是一个SP (服务提供者)。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49287149

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档