我是php的新手,我需要对SSO服务器进行身份验证.SSO服务器是.Net服务器,使用SSL证书.
当我从SSO服务器返回时,响应被编码.我当然有证书的密钥,但我怎么能解密回复呢?
这对我来说很模糊,请不要犹豫,详细说明你的答案:)
非常感谢您的帮助,最好的问候
谁能告诉我如何在我的spring应用程序中实现单点登录.(Tomcat或Jboss服务器)
与我分享任何文档或链接,以便在我的春季应用程序中使用此功能.
我使用的是2.5.6弹簧.
请做必要的.
我有两个Web应用程序,Webapp A和webapp B. Webapp A是Spring 3.1 webapp.Webapp B是独立的非spring webapp.两者都受CAS保护.我的目标是允许webapp A使用代理票据从webapp B中检索信息.
为了简化操作,我将spring-security提供的cas-sample作为webapp A.配置为使用本地cas的默认样本按预期工作.对于那些不熟悉cas-sample的人,它提供了一个使用代理票据来请求cas-sample应用程序中的另一个页面的示例.然后我使用一个简单的页面在apache webserver下使用mod_auth_cas保护webapp B.同样,webapp B按预期工作.当我更改cas-sample以使用代理票据请求webappB时,它不起作用.来自webappB请求的响应是CAS登录页面.注意:我已经为webapp B尝试了一个tomcat webapp(非spring),结果相同.这让我相信问题不在webapp B中.下面是用于使用代理票证向webapp B发出请求的代码.并且可以在此处查看安全上下文配置.
final String targetUrl = "https://server/webappB";
final CasAuthenticationToken token = (CasAuthenticationToken) request.getUserPrincipal();
final String proxyTicket = token.getAssertion().getPrincipal().getProxyTicketFor(targetUrl);
final String serviceUrl = targetUrl+"?ticket="+URLEncoder.encode(proxyTicket, "UTF-8");
String proxyResponse = CommonUtils.getResponseFromServer(serviceUrl, "UTF-8");
Run Code Online (Sandbox Code Playgroud)
我究竟做错了什么?当上面的targetUrl在webapp A中而不是外部应用程序时,为什么会这样?
谢谢你的帮助.
编辑:如果有帮助,这里是在向webapp请求使用代理票据的页面时CAS日志中出现的内容.
[org.jasig.cas.ticket.registry.DefaultTicketRegistry] - Attempting to retrieve ticket [TGT-2-YX0RNVRDHAPyGLy6ymGGVucUSQyjtre4jvGrAxYk2hXsehsxqx-cas]
[org.jasig.cas.ticket.registry.DefaultTicketRegistry] - Ticket [TGT-2-YX0RNVRDHAPyGLy6ymGGVucUSQyjtre4jvGrAxYk2hXsehsxqx-cas] found in registry.
[org.jasig.cas.ticket.registry.DefaultTicketRegistry] - Added ticket [ST-3-JrQKqqpZJz00a2hsGZP6-cas] to registry.
[org.jasig.cas.CentralAuthenticationServiceImpl] - Granted proxy ticket …Run Code Online (Sandbox Code Playgroud) 我想在我们当前的网站上实施SSO,以便我们可以使用Facebook帐户登录该网站.能否请您提供实施它需要遵循的步骤?
我正在使用相同的域但不同的子域在.NET 2.0站点和.NET 4.0站点之间进行SSO.在一台机器上的开发环境中一切正常,但我无法让4.0生产站点接受2.0生产站点生成的auth cookie.这两个站点位于不同的服务器上,一个运行IIS 6,只安装了2.0框架,另一个运行IIS 7.5,安装了4.0框架.我已经阅读了其他问题的所有其他答案,这些问题指出了<machineKey>元素和<authentication><forms>元素的问题,并且相信我,所有这些东西都已正确设置,并且所有4个站点都具有与这些元素完全相同的属性值.
起初我认为这是加密的一个问题,但是当我仔细研究Fiddler发生了什么时,我发现auth cookie正在请求中正确传递,但似乎在某些时候消失了,然后不是可在Request.Cookies集合中找到.
4.0生产站点位于负载均衡器后面,但Web场中当前没有其他服务器联机.负载均衡器能否以某种方式丢弃cookie?cookie是否未添加到Request.Cookies集合中,因为它不是有效的身份验证cookie?如果是这样,为什么它不合法?
总而言之,当我在请求的页面上执行以下操作时:
HttpCookie AuthCookie = Request.Cookies.Get(".SSOAUTH");
AuthCookie为null,即使我可以在Fiddler的请求标头中看到具有该名称的cookie.
asp.net forms-authentication .net-4.0 .net-2.0 single-sign-on
我们有大约十几个内部管理员Web应用程序(主要是Java),员工可以使用这些应用程序进行各种工作流程,并且每个人都有自己的,不同的登录/身份验证系统.我被要求在一个单一的唱歌系统下将它们联合起来.我将以下图表作为起点使用:

如您所见,每个应用程序都使用CAS客户端连接到CAS服务器.此服务器还具有配置了Shibboleth插件(?)的Apache httpd.然后,此CAS服务器与我们的Active Directory("AD")服务器通信.
我需要确保完全理解这些技术如何协同工作:
我基于令牌的身份验证系统的经验总是涉及令牌交换系统.我们想要对用户进行身份验证的应用程序(通过请求)接收令牌,然后将此令牌安全地传输到身份验证系统的令牌交换服务,该服务验证令牌并将用户信息返回给应用程序.
我最近遇到过ZenDesk的SSO实现,它使用JWT但没有令牌交换/验证步骤.
这里的PHP实现示例:https://github.com/zendesk/zendesk_jwt_sso_examples/blob/master/php_jwt.php
基本上,编码的用户信息与HMAC一起通过URL来签署请求.ZenDesk端将解码,验证HMAC是否有效(使用共享密钥),并立即根据请求的用户信息对用户进行身份验证.生成令牌以确保其有效的系统没有回调.
我的问题是:如果有人要捕获请求,并且他们对其进行解码以获取用户信息和HMAC,他们就不能将其发送到服务器场以开始迭代秘密密钥,直到他们弄清楚它是什么(即:使HMAC匹配)?然后,一旦掌握了密钥,您就可以向ZenDesk作为首席执行官进行身份验证,并提出荒谬的请求吗?
希望我错过了一些东西,因为这种SSO方法是我见过的最简单的方法.
我正在构建一个SAML 2.0 AuthNRequest.我设法使用OpenSaml添加签名信息,但我找不到使用库添加<ds:SignatureValue/>和<ds:DigestValue/>VALUES的方法.这是代码:
public String buildAuthnRequest() {
QName qname = new javax.xml.namespace.QName(SSO_METDATA_QNAME);
IssuerBuilder issuerBuilder = new IssuerBuilder();
Issuer issuer = issuerBuilder.buildObject("urn:oasis:names:tc:SAML:2.0:assertion", "Issuer", "samlp");
issuer.setValue(issuer.getValue());
DateTime issueInstant = new DateTime();
AuthnRequestBuilder authnRequestBuilder = new AuthnRequestBuilder();
AuthnRequest authnRequest = authnRequestBuilder.buildObject("urn:oasis:names:tc:SAML:2.0:protocol","AuthnRequest", "samlp");
authnRequest.setAssertionConsumerServiceURL("http://test.com");
// Signature sign = null;
// sign.setSignatureAlgorithm("SHA256");
// Credential credential = null;
// sign.setSigningCredential(credential);
// authnRequest.setSignature(sign);
NameIDPolicyBuilder policy = new NameIDPolicyBuilder();
NameIDPolicy pol = policy.buildObject();
RequestedAuthnContextBuilder contextBuild = new RequestedAuthnContextBuilder();
RequestedAuthnContext context = contextBuild.buildObject();
authnRequest.setRequestedAuthnContext(context);
authnRequest.setNameIDPolicy(pol); …Run Code Online (Sandbox Code Playgroud) 我正在探索我的项目SSO解决方案的keycloak,我正在尝试这个博客上的open-connect https://developers.redhat.com/blog/2017/05/25/easily-secure-your-spring-boot-applications -with-keycloak /
我想提出一个关于Single Sign Out的问题,我想知道背后的原理是什么.试图搜索在线文档,但我没有找到任何线索.有一段时间,我认为在oauth2世界中单点登出没有优雅的解决方案.
一所大学希望获得具有Shibboleth身份验证的应用程序。他们提供自己的IDP。我想制作一个Node.Js后端和Angular前端。他们俩都应该与REST通信。是否仍然可以将Shibboleth Service Provider集成到Node.Js后端并通过Angular前端进行身份验证?
single-sign-on ×10
java ×4
cas ×2
oauth-2.0 ×2
saml-2.0 ×2
shibboleth ×2
spring ×2
.net-2.0 ×1
.net-4.0 ×1
angular ×1
asp.net ×1
certificate ×1
jwt ×1
keycloak ×1
node.js ×1
opensaml ×1
php ×1
rest ×1
saml ×1
spring-mvc ×1