如何使用 OAuth/SAML 协议在 asp.net mvc 5 应用程序中实现单点登录 (SSO),而不是使用表单身份验证。
我正在将登录小部件集成到音乐商店示例中。使用小部件我可以登录,成功验证后我将被重定向到登录页面。(使用示例页面中的代码http://developer.okta.com/docs/guides/okta_sign-in_widget.html#creating-an-html-file-with-the-widget-code
在音乐商店示例中,登录后 Request.IsAuthenticated 为 true,但使用小部件登录时情况并非如此。使用登录小部件进行身份验证后,如何检查用户是否已登录?
我为这个错误苦苦挣扎了一整天。我一遍又一遍地检查我在tomcat中Keycloak和APP的配置,没有发现错误。

APP配置:
1.Keycloak.json是从Keycloak控制台复制的
2.context.xml 也正确,因为它在“localhost”场景下工作正常
3.web.xml:
<web-app xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
version="3.0">
<module-name>Keycloak-Tomcat-App</module-name>
<!--
<security-constraint>
<web-resource-collection>
<web-resource-name>init pages</web-resource-name>
<url-pattern>/*</url-pattern>
</web-resource-collection>
<auth-constraint>
<role-name>user</role-name>
</auth-constraint>
</security-constraint>
-->
<security-constraint>
<web-resource-collection>
<web-resource-name>All roles pages</web-resource-name>
<url-pattern>/roles/*</url-pattern>
</web-resource-collection>
<auth-constraint>
<role-name>admin</role-name>
</auth-constraint>
</security-constraint>
<login-config>
<auth-method>BASIC</auth-method>
<realm-name>this is ignored currently</realm-name>
</login-config>
<security-role>
<role-name>admin</role-name>
</security-role>
<security-role>
<role-name>user</role-name>
</security-role>
Run Code Online (Sandbox Code Playgroud)
我创建一个名为 csf-admin 的用户,并将角色“admin”和“user”分配给 csf-admin
1)在linux.1上使用broswer访问linux.3上部署在TOMCAT中的APP(用户https)
2)我的浏览器可以打开Keycloak认证页面(用户https,linux.2上的keycloak)
3)以csf-admin身份登录keycloak
4)Keycloak将我重定向到APP url(使用https)
5)HTTP 403“已禁止访问指定资源。” 到场
我真的不知道根本原因......需要你的帮助......
我是 SAML 新手,目前有一个 Spring Restful Web 服务器应用程序,它使用带有基本身份验证的 spring security。由于我有多个企业客户,我希望支持 SAML SSO。
尝试查找有关如何设置 SAML 来对不同客户的不同 IDP 进行身份验证的文档,最好是示例,其中 SAML IDP 详细信息是从持久层 (DB) 读取的。
还想知道在 Web 应用程序中支持正确登录的策略。我现在是否需要为每个客户支持不同的 URL,以便我知道针对哪个 IDP 进行身份验证?
例如我有两个客户
客户 A - 使用 SAML IDP 服务器 A'
客户 B - 使用 SAML IDP 服务器 B'
当客户 A 的用户访问我的网站时:我如何知道现在需要针对 SAML IDP A 进行身份验证?是通过 url 还是某个 url 参数?一旦我知道他是谁,我如何设置 spring saml 来通过 IDP A' 进行身份验证(从该客户的数据库设置中读取)。请注意,我无法在春季配置中预先设置 IDP,因为新客户可以稍后使用新的 IDP 加入。
谢谢
我正在使用 SAML 为运行 tomcat 的 Web 服务器实现 SSO 身份验证流程。使用 POST 或重定向绑定时一切正常,但根据我所读到的内容,为了支持 REST API 前面的 SAML 身份验证,我还需要配置和使用 ECP 配置文件。
如果我错了,请先纠正我,但 ECP 流程应该是这样的:
Accept: application/vnd.paos+xml和PAOS: urn:liberty:paos:2003-08;urn:oasis:names:tc:SAML:2.0:profiles:SSO:ecp)问题是所有这些都在步骤 6 之前有效。在这一步中,我遇到了问题,响应信封的主体包含一个 Destination 属性,该属性指向SP 的POST 断言消费者服务。此目标属性由 keycloak 设置,与我想要将响应发送到的实际 ECP 服务不匹配。我们使用的 SAML 库是 opensaml,它根据此 Destination 属性检查请求 URI,如果不匹配,则会引发异常org.opensaml.xml.security.SecurityException: SAML message …
我们正在尝试使用自定义 mysql 数据库设置 sso,但它在以下两个请求之间进入无限循环。
POST http://192.168.0.15/simplesaml/module.php/core/loginuserpass.php
Run Code Online (Sandbox Code Playgroud)
设置Cookie
PHPSESSID=d0eaabb959ffeb2a0dd20f4744945f8f; path=/; HttpOnly
SimpleSAMLAuthToken=_297a91e9a4e14c61d247427063201a39587396c2e3; path=/; httponly
http://192.168.0.15/simplesaml/module.php/core/loginuserpass.php?AuthState=_e3e75218660095b936b9582356bcbc7b1e26934876%3Ahttp%3A%2F%2F192.168.0.15%2Fsimplesaml%2Fmodule.php%2Fcore%2Fas_login.php%3FAuthId%3Dexample-sql%26ReturnTo%3Dhttp%253A%252F%252F192.168.0.2%252F%252Fver06%252Fapp.php
Run Code Online (Sandbox Code Playgroud)
设置Cookie
PHPSESSID=92688949c724d39e673eec73b0674de0; path=/; HttpOnly
Run Code Online (Sandbox Code Playgroud)
192.168.0.15是我们的 SSO 服务器,192.168.0.2也是请求 SSO 的网站。
我们是否遗漏了什么?是否有客户端和服务器分离的 sso 模块以方便使用。
此外,我们没有生成日志文件。已验证文件夹的权限。
给定 Identity Server 4,我们可以通过单个用户身份验证服务器实现由不同应用程序使用的单点登录吗?
如果是这样,我们该怎么做呢?有相同的参考资料吗?
我已经构建了一个身份验证系统,并希望将其设为联合身份验证和授权系统 (SSO),例如 Google+ 或 Facebook。经过研究,我发现 OAuth 2.0 之上的 OpenID Connect 是最好的选择。
我认为使用现有的经过良好测试的库比自己实现整个堆栈更好,因此我计划使用MITREID Connect。任何意见?
然而,还有一些事情我不确定:
如果我遗漏了任何关键点,请告诉我。如果我在错误的论坛上发帖,请随时将帖子移至适当的论坛。
java federated-identity openid-provider single-sign-on openid-connect
我正在尝试为桌面应用程序实现 SSO,目前正在研究什么是最好的工具。我接触过 SAML,但据我了解,SAML 确实适用于 Web 应用程序。有没有办法在桌面应用程序中使用 SAML 协议?
示例用例:用户登录到计算机,当他或她单击应用程序图标时,他们会自动登录。
我对 SAML 及其通过 Shibboleth 的实施有很多疑问。我已经做了相当多的研究,我想澄清一些事情。我有一个与我们的服务器通信的移动应用程序。我们的一个企业客户(我们称之为 StackOverflow University)希望使用 Shibboleth(或者我应该说 SAML?)向我们的系统提供 SSO。他们已经向我们发送了所有学生的电子邮件地址和基本个人资料信息。使用 OAuth2,我们确切地知道如何提供 SSO,但是,使用 SAML,我们无法专注于 IDP、SP、AuthnRequest、元数据等。
我们的假设。
我们的客户要求我们提供以下信息
请让我知道下一步。我至少需要以下信息来配置我们这边: - 您的服务提供商实体 ID - 您的服务提供商元数据(如果您不是 InCommon 的成员) - 我们应在 SAML 断言中向您发送的属性列表
我们不是 InCommon 的成员。
方法 学生下载我们的移动应用程序。他们选择自己的机构(StackOverflow 大学)。调用我们的服务器来检索 SSO 配置,其中包含 SAML 所需的信息。
<ArtifactResolutionService Binding="urn:oasis:names:tc:SAML:1.0:bindings:SOAP-binding" Location="https://webauth.xxx.edu:8443/idp/profile/SAML1/SOAP/ArtifactResolution" index="1"/>
<ArtifactResolutionService Binding="urn:oasis:names:tc:SAML:2.0:bindings:SOAP" Location="https://webauth.xxx.edu:8443/idp/profile/SAML2/SOAP/ArtifactResolution" index="2"/>
<SingleSignOnService Binding="urn:mace:shibboleth:1.0:profiles:AuthnRequest" Location="https://webauth.xxx.edu/idp/profile/Shibboleth/SSO"/>
<SingleSignOnService Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST" Location="https://webauth.xxx.edu/idp/profile/SAML2/POST/SSO"/>
<SingleSignOnService Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect" Location="https://webauth.xxx.edu/idp/profile/SAML2/Redirect/SSO"/>
<SingleSignOnService Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST-SimpleSign" Location="https://webauth.xxx.edu/idp/profile/SAML2/POST-SimpleSign/SSO"/>Run Code Online (Sandbox Code Playgroud)
鉴于我们知识的空白,有人可以帮助解释这个过程吗?