아주 오래전에 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
分享到:
相关推荐
2. JOSSO(Java Open Single Sign-On)是一个基于J2EE的开源SSO框架,专注于提供跨应用的集中式身份验证。JOSSO采用JAAS(Java Authentication and Authorization Service)标准,支持Web服务/SOAP、EJB、Struts、...
2. **JOSSO(Java Open Single Sign-On)**:是一个基于J2EE的开源SSO框架,专注于提供跨应用程序的集中式身份验证。JOSSO利用了JAAS、Web服务、EJB、Struts、Servlet/JSP等标准技术,可轻松集成到各种Java环境中,...
JOSSO,全称为Java Open Single Sign-On Project,是一个开源的单点登录解决方案,旨在简化企业环境中多应用系统的身份验证流程。 JOSSO中间件的核心功能是提供一个中央身份验证服务(Central Authentication ...
JOSSO(Java Open Single Sign-On)是一个开源的、基于 J2EE 的单点登录(Single Sign-On, SSO)基础设施。其核心目标是为用户提供一种集中式、平台无关的用户验证和授权解决方案。通过 JOSSO,可以在统一的平台上...
JOSSO,全称为Java Open Single Sign-On Project,是一个基于Java平台的开源单点登录(Single Sign-On,简称SSO)解决方案。第二代JOSSO(josso2)旨在提供一个标准化、可扩展且安全的SSO框架,使得用户在访问多个...
JOSSO,全称Java Open Single Sign-On Project,是一个开源的身份认证和授权框架,专注于提供单点登录(Single Sign-On, SSO)解决方案。在JOSSO2.3版本中,它支持在Apache Tomcat这样的Java应用服务器上部署和运行...
josso+Tomcat配置之josso服务器配置 josso是基于Java的单点登录(SSO)服务器,能够提供身份验证和授权服务。Tomcat是Apache软件基金会开发的开源Java servlet容器。配置josso服务器需要将josso war文件部署到...
为了解决这一问题,单点登录(Single Sign-On,简称SSO)技术应运而生。通过SSO技术,用户只需要登录一次就可以访问所有相互信任的应用系统,极大地提高了用户体验和安全性。本文将详细介绍如何利用GlassFish应用...
在现代企业级应用中,单点登录(Single Sign-On, SSO)已成为提高用户体验、增强安全性的重要手段之一。本文将详细介绍如何利用Glassfish应用服务器与JOSSO框架实现单点登录功能,并通过MySQL数据库存储用户凭证,...
首先,了解"Josso"是Java开源身份和服务管理套件(Java Open Single Sign-On),它提供了一种统一的方式来管理和处理用户认证和授权。而"python-josso-auth"则是将Josso的功能引入到Python环境中,使得Python开发者...
单点登录(Single Sign-On,简称SSO)是一种身份验证技术,它允许用户在通过一次登录验证后,无须再次输入凭证即可访问多个相互关联的应用系统。这一技术大大提升了用户体验,减少了用户记忆和输入多个密码的负担,...
2. **JOSSO(Java Open Single Sign-On)**:JOSSO 是一个基于 Java 的开放源代码单点登录解决方案,旨在提供一种简单、统一的方式来管理和控制企业环境中用户的访问权限。它支持多种身份验证协议,包括 CAS,使得...
"josso-final"这个标题可能指的是一个Java项目或者框架的最终版本,可能是“Java Security and Single Sign-On”(Java安全和单点登录)的简称。单点登录(Single Sign-On, SSO)是一种身份验证机制,允许用户在一次...
开源SSO解决方案提供了经济且灵活的选择,如OpenSSO(源自Sun Java System Access Manager)、JOSSO(Java Oriented Single Sign-On)和CAS(Central Authentication Service)。其中,CAS是由耶鲁大学开发的,以其...
- **JOSSO (Java Open Single Sign-On)**:提供基于Java的开源SSO解决方案。 - **OpenSSO**:由Sun Microsystems发起,后成为ForgeRock的一部分,提供了全面的身份管理平台。 - **SourceID**:另一个开源的SSO...
- **开源SSO软件**:例如JOSSO(Java Open Single Sign-On)、OpenSSO、SourceID等。这些开源解决方案成本较低,但可能需要更多的自定义工作。 3. **简单实现SSO**: 对于需求不高且不想改动被集成系统的情况,...
本文主要分析两种常见的SSO实现框架——JOSSO(Java Open Single Sign-On)和CAS(Central Authentication Service)。 JOSSO是一个基于Java和J2EE的开源SSO框架,其主要特点如下: 1. 100% Java实现,利用了JAAS...
- **JOSSO (Java Open Single Sign-On)**:基于Java的开源SSO解决方案。 - **OpenSSO**:由Sun Microsystems开发,后成为ForgeRock的一部分。 - **SourceID**:提供开放源代码的认证和授权服务。 对于那些对SSO...
JOSSO(Java Open Single Sign-On)是另一个基于Java的SSO解决方案,尽管其在某些社区中的评价并不高。 学习和实施SSO时,开发者可以参考社区资源,如BEA广州UserGroup的讨论,以及David的博客和其他专家的文章,...