josso是一个sso开源软件
本文通过浅析一个php agent的文件和一个sample来描述josso如何工作.
josso版本 1.8.1
josso php agent的相关文件
nusoap
php的一个ws相关的开发包。
josso-cfg.inc
配置文件。配置josso的url等等.
class.jossorole.php
定义jossorole,只有name.
class.jossouser.php
定义jossouser,只有name和properties.
class.jossoagent.php
定义jossoagent,包含大量方法。
getNewInstance 用配置文件josso-cfg.inc里面的信息构造jossoagent.
jossoagent 构造函数。
getUserInSession //Gets the authnenticated jossouser, if any.
isUserInRole($rolename)
findRolesBySSOSessionId($sessionId)
accessSession //Sends a keep-alive notification to the SSO server so that SSO sesison is not lost.
isAutomaticLoginRequired
resolveAuthenticationAssertion
josso.php
分为两部分
1 php逻辑,检查是否是ignored resource, 基于josso-cfg.inc.
如果是josso partner app的话,是否需要自动login.
2 方法的定义
//这一组是用来login,和logout的
jossoRequestLogin() //用$_SERVER['REQUEST_URI']作为currentUrl去做login,Use this function when ever you want to start user authentication.
jossoRequestOptionalLogin()
jossoRequestLoginForUrl($currentUrl, $optional) //为currentUrl做login,完成后会跳到josso-security-check.php
jossoRequestLogout() //Use this function when ever you want to logout the current user.
jossoRequestLogoutForUrl($currentUrl)
//这一组是用来生成各种url的
jossoCreateAuthenticationUrl() //Creates a Authentication Url. 这个源文件里面的注释和变量名起的不好,容易误解。
jossoCreateLoginUrl() //Creates a login url for the current page, use to create links to JOSSO login page(josso-login.php).
jossoCreateLogoutUrl($backToUrl)
jossoSecurityCheckUrl
//辅助的
forceRedirect($url,$die=true)
createBaseUrl
createFrontChannelParams //Add some request parameters like host name
prepareNonCacheResponse
例子流程描述
1 index.php
//通过agent拿到user和sessionId
$user = $josso_agent->getUserInSession();
$sessionId = $josso_agent->getSessionId();
// Check if user is authenticated
if (isset($user)) {
//如果已经通过验证
//可以通过提供的多个方法得到该用户的用户信息,role信息等等.
// logout url.
echo 'Click <a href="'.jossoCreateLogoutUrl(NULL).'">here</a> to logout ...<br>';
} else {
// User is unknown. 提供一个loginUrl,该方法生成的url会附加当前的url
//生成的url类似于http://localhost/josso-php-partnerapp/josso-login.php?josso_current_url=/josso-php-partnerapp/index.php
echo 'Click <a href="'.jossoCreateLoginUrl().'">here</a> to login ...';
}
2 josso-login.php
//取出原有的url,保证做完login可以跳回该url
$currentUrl = $_REQUEST['josso_current_url'];
去做认证,这里不会直接跳回currentUrl,而是先跳回josso-security-check.php,当然currentUrl的信息会保留,从而从josso-security-check.php跳到currentUrl
这里最终会到一个类似于http://localhost:8080/josso/signon/login.do?josso_back_to=http://localhost/josso-php-partnerapp/josso-security-check.php&josso_partnerapp_host=localhost的
url去做用户认证.
jossoRequestLoginForUrl($currentUrl);
3 josso server的login.
4 josso-security-check.php
//返回josso-security-check是不带sessionid的,只有assertion_id,通过assertion_id可以得到sessionId,然后放置在cookie里
$assertionId = $_REQUEST['josso_assertion_id'];
$ssoSessionId = $josso_agent->resolveAuthenticationAssertion($assertionId);
setcookie("JOSSO_SESSIONID", $ssoSessionId, 0, "/"); // session cookie ...
$_COOKIE['JOSSO_SESSIONID'] = $ssoSessionId;
//跳回原来的url,这里就是/josso-php-partnerapp/index.php
$backToUrl = $_SESSION['JOSSO_ORIGINAL_URL'];
forceRedirect($backToUrl, true);
5 index.php
跳回到index.php了.由于已经登录了,所以可以显示用户相关信息,同时给出一个logout的url.
// logout url.
// 和login时大同小异,类似于http://localhost/josso-php-partnerapp/josso-logout.php?josso_current_url=http://localhost/josso-php-partnerapp/index.php
echo 'Click <a href="'.jossoCreateLogoutUrl(NULL).'">here</a> to logout ...<br>';
6 josso-logout.php
//实际去做logout,并且可以跳回本来的url,即index.php,这里和login不同,不用到josso-security-check.php去做check.
$currentUrl = $_REQUEST['josso_current_url'];
jossoRequestLogoutForUrl($currentUrl);
7 josso server的logout
8 index.php
又回到了1的状态.
分享到:
相关推荐
JOSSO的设计基于代理模式,它通过一种称为Agent的组件来与各个应用系统交互。Agent安装在每个需要进行SSO的应用服务器上,负责拦截用户的请求,处理认证过程,并确保用户权限的安全传输。此外,JOSSO支持多种协议,...
josso+Tomcat配置之josso服务器配置 josso是基于Java的单点登录(SSO)服务器,能够提供身份验证和授权服务。Tomcat是Apache软件基金会开发的开源Java servlet容器。配置josso服务器需要将josso war文件部署到...
JOSSO,全称Java Open Single Sign-On Project,是一个开源的身份认证和授权框架,专注于提供单点登录(Single Sign-On, SSO)解决方案。在JOSSO2.3版本中,它支持在Apache Tomcat这样的Java应用服务器上部署和运行...
### JOSSO 实现 SSO 的关键技术点 #### 一、JOSSO 概述 JOSSO(Java Open Single Sign-On)是一个开源的、基于 J2EE 的单点登录(Single Sign-On, SSO)基础设施。其核心目标是为用户提供一种集中式、平台无关的...
- Josso主要由三个部分组成:Josso Gateway、Josso Agent以及Josso Console。 - Josso Gateway作为中心认证服务器,负责处理认证请求并管理用户的登录状态。 - Josso Agent用于保护受保护资源,代理用户请求并...
在实现SSO的过程中,JOSSO的核心组件包括身份提供者(Identity Provider,IdP)、服务提供者(Service Provider,SP)和代理服务器(Agent)。身份提供者负责用户的身份验证,服务提供者是需要保护的应用,而代理...
### Glassfish + Josso 单点登录实现及MD5加密技术详解 #### 一、引言 在现代企业级应用中,单点登录(Single Sign-On, SSO)已成为提高用户体验、增强安全性的重要手段之一。本文将详细介绍如何利用Glassfish应用...
《Python-Josso-Auth库详解与应用》 在Python的开发世界中,后端库的选用至关重要,它们能够极大地提升开发效率并提供强大的功能支持。"python-josso-auth"是一个专门针对身份验证(Authentication)和授权...
标题中的"loginServer CAS / josso / LDAP / RBAC / ACL"涉及到了多个IT领域的关键概念,这些都是构建安全、高效的企业级身份验证和授权系统的重要组成部分。以下是对这些概念的详细解释: 1. **CAS(Central ...
4. **JOSSO架构**:研究JOSSO的核心组件,如Agent、Server、Console等,以及它们如何协同工作。 5. **配置JOSSO**:学习如何在JOSSO Server上配置认证服务,以及如何在应用中集成SSO Agent。 6. **安全考虑**:了解...
$ git clone https://github.com/josso/whitespace-interpreter-php.git $ cd whitespace-interpreter-php $ php whitespace.php [filename.ws] 例子 $ php whitespace.php examples/helloworld.ws Hello, World ! $...
Atricore的JOSSO是一种开源且受商业支持的Internet单点登录(FSSO)解决方案,用于点击和基于标准(SAML2)的Internet规模SSO实施。 欲了解更多信息,请通过以下网址与我们联系:http://www.josso.org
一个开源的J2EE-based的SSO(SSO:单一登录技术是一种认证和授权机制,它允许注册用户只需要在任一成员网站上登录一次,而后授权访问其他连接的分支网站,无需再进行验证登录)基础结构.它的目的是提供一种用来解决在...
本文主要分析两种常见的SSO实现框架——JOSSO(Java Open Single Sign-On)和CAS(Central Authentication Service)。 JOSSO是一个基于Java和J2EE的开源SSO框架,其主要特点如下: 1. 100% Java实现,利用了JAAS...
JOSSO采用JAAS(Java Authentication and Authorization Service)标准,支持Web服务/SOAP、EJB、Struts、Servlet/JSP等技术,实现平台无关的用户验证。JOSSO的设计旨在简化SSO的实施和管理,适用于多应用环境。 ...
3. **Agent-based(基于代理人)**:每个应用都有一个代理,负责与中心认证服务进行通信,获取或更新用户状态。 4. **Token-based**:使用令牌(token)进行身份验证,令牌可以是JWT(JSON Web Token)或其他形式的...
其次,对于预算有限或者对SSO需求较低的项目,开源的SSO解决方案成为一种选择,比如JOSSO(Java Open Single Sign-On)、OpenSSO(现为ForgeRock的OpenAM)和SourceID。这些开源工具提供了基础的SSO功能,但可能需要...
OmNom 的前端 web 应用程序,包括可部署的 tomcat/josso/fuseki 设置 捆绑: Tomcat 7.0.42 风木 0.2.7 JOSSO Tomcat 代理 1.8.7 dm2e-ws 1.0-快照 构建过程 bash bin/download-assets.sh all mvn package ...
JOSSO被认为更加成熟,支持Java、PHP和ASP等多种客户端。而CAS,由耶鲁大学开发,以其先进的设计理念、合理的体系结构、简单的配置、广泛的客户端支持以及成熟的技术,成为许多组织的首选。 ### 单点登录的实现机制...