아주 오래전에 SSO 관련 솔루션을 찾아보다가, JOSSO를 들여다 본 적이 있었다. 2006년 9월. 그때의 JOSSO 버전이 1.4. 그로부터 시간이, 아니 세월이 많이 흘렀다. 그동안 JOSSO 역시 꽤 많은 변화를 겪었다. 무엇보다도 예전에는 전혀 지원하지 않던 Cross Domain SSO를 이젠 지원한다고 한다. 도메인이 서로 달라도, SSO가 된단다. 그 원리가 문득 궁금해졌다.
-
http://www.josso.org/ JOSSO 공식 사이트. 혹시 약자가 궁금하신 분을 위해. Java Open Single Sign-On = JOSSO.
2009년 8월 현재, 최신 버전은 1.8. 크로스 도메인 기능을 지원함. PHP, ASP, 클라이언트(에이전트) 모듈 제공
http://www.josso.org/confluence/display/JOSSO1/Architecture+Overview 아키텍춰 개요
문서가 생각보다 복잡하다. 너무 멋있게 포장하려고 한 것 같다.
하지만, 생각보다 간단하다. PHP에서 사용하는 샘플을 보자.
Sample page
index.php
|
<!doctype html public "-//w3c//dtd html 4.0 transitional//en">
<html>
<head>
<title>Sample Partner Application - JOSSO</title>
<meta name="description" content="Java Open Single Signon">
</head>
<body>
<h1>This is a very simple PHP JOSSO partner application</h1>
<?php
// jossoagent is automatically instantiated by josso.php,
// declared in auto_prepend_file property of php.ini.
// If you do not use auto_prepend feature, include josso.php in all your pages
// Get current SSO User and SSO Session information,
$user = $josso_agent->getUserInSession();
$sessionId = $josso_agent->getSessionId();
// Check if user is authenticated
if (isset($user)) {
// Display USER INFORMATION
// Username associated to authenticated user
echo 'Username : ' . $user->getName() . '<br><br>';
// Get a specific user property
echo 'user.name=' . $user->getProperty('user.name') . '<br><br>';
// Get all user properties
$properties = $user->getProperties();
if (is_array($properties)) {
foreach ($properties as $property) {
echo $property['name'] . '=' . $property['value'] . '<br>';
}
}
// Get all user roles
$roles = $josso_agent->findRolesBySSOSessionId($sessionId);
echo '<h2>Roles</h2>';
foreach ($roles as $role) {
echo $role->getName() . '<br>';
}
// Check if user belongs to a specific role
if ($josso_agent->isUserInRole('role1')) {
echo '<h3>user is in role1</h3>';
}
echo 'Click <a href="'.jossoCreateLogoutUrl().'">here</a> to logout ...<br>';
echo '<p>SSO Session ID : ' . $sessionId . '</p>';
} else {
// User is unknown..
echo '<h2>you are an annonymous user ...</h2>';
echo 'Click <a href="'.jossoCreateLoginUrl().'">here</a> to login ...';
}
?>
</body>
</html>
|
중간에 괜히 복잡하게 보이는 부분은, user의 role(역할)과 property(속성)을 가져와서 보여주려 하기 때문이고, 실제로는 아주 간단하다.
$user = $josso_agent->getUserInSession();
$sessionId = $josso_agent->getSessionId();
// Check if user is authenticated
if (isset($user)) {
echo 'Click <a href="'.jossoCreateLogoutUrl().'">here</a> to logout ...<br>';
echo '<p>SSO Session ID : ' . $sessionId . '</p>';
} else {
// User is unknown..
echo '<h2>you are an annonymous user ...</h2>';
echo 'Click <a href="'.jossoCreateLoginUrl().'">here</a> to login ...';
}
|
사용자(user)의 세션(session)이 세션 서버에 있는지를 검사하면, 끝이다.
그런데, 사이트의 문서를 아무리 들여다 봐도, cross domain의 원리에 대해서는 나와 있는 게 없다.
결국, 소스를 설치해서 뜯어봐야 알 수 있을 듯...
-------------------------------------
FROM: https://blog.naver.com/joycestudy/100086631671
分享到:
相关推荐
JOSSO(Java Open Single Sign-On)是一个开源的J2EE-based的SSO(单点登录)基础结构.它的目的是提供一种用来解决在统一平台上进行用户集中认证的方案.
josso+tomcat配置之josso服务器配置(一)[参考].pdf
josso2 第二代JOSSO(Java开放式单点登录)。 请访问以获得文档。
单点登录JOSSO中间件~~~~~实现多web系统单点登录问题
简单的翻译 关于josso2.3 版本第9--12章节的翻译
上一篇的补充,这篇比较详细。而且补充了MD5加密算法的数据库录入实验法,所以本片更为完善,如果初次接触,建议先看上篇。
本文只做交流,请各位江湖大侠指点。谢谢各位! 使用MySql5数据库和GlassfishV3服务器 加Josso1.8制作的单点登录范例。
资源来自pypi官网。 资源全名:python-josso-auth-0.1.3.tar.gz
NULL 博文链接:https://lindows.iteye.com/blog/300564
Atricore的JOSSO是一种开源且受商业支持的Internet单点登录(FSSO)解决方案,用于点击和基于标准(SAML2)的Internet规模SSO实施。 欲了解更多信息,请通过以下网址与我们联系:http://www.josso.org
一个开源的J2EE-based的SSO(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 ...
这个项目是从 Shopizer 复制过来的( ) 该项目的目标是扩展通用商业 Commerce 站点... 店主目录经理的 CMS : Hippo( ) 关于产品的博客:Apache Roller ( ) 单点登录所有系统:JOSSO ( ) --> OPENAM( ) <已更改>
$ 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 ! $...