`

JOSSO: Single Sign On, Cross Domain

阅读更多

아주 오래전에 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

分享到:
评论

相关推荐

    single sign on 分析报告

    2. JOSSO(Java Open Single Sign-On)是一个基于J2EE的开源SSO框架,专注于提供跨应用的集中式身份验证。JOSSO采用JAAS(Java Authentication and Authorization Service)标准,支持Web服务/SOAP、EJB、Struts、...

    Single Sign On 分析报告

    2. **JOSSO(Java Open Single Sign-On)**:是一个基于J2EE的开源SSO框架,专注于提供跨应用程序的集中式身份验证。JOSSO利用了JAAS、Web服务、EJB、Struts、Servlet/JSP等标准技术,可轻松集成到各种Java环境中,...

    单点登录JOSSO中间件

    JOSSO,全称为Java Open Single Sign-On Project,是一个开源的单点登录解决方案,旨在简化企业环境中多应用系统的身份验证流程。 JOSSO中间件的核心功能是提供一个中央身份验证服务(Central Authentication ...

    JOSSO实现SSO

    JOSSO(Java Open Single Sign-On)是一个开源的、基于 J2EE 的单点登录(Single Sign-On, SSO)基础设施。其核心目标是为用户提供一种集中式、平台无关的用户验证和授权解决方案。通过 JOSSO,可以在统一的平台上...

    josso2:第二代JOSSO(Java开放式单点登录)

    JOSSO,全称为Java Open Single Sign-On Project,是一个基于Java平台的开源单点登录(Single Sign-On,简称SSO)解决方案。第二代JOSSO(josso2)旨在提供一个标准化、可扩展且安全的SSO框架,使得用户在访问多个...

    Josso2.3 译文

    JOSSO,全称Java Open Single Sign-On Project,是一个开源的身份认证和授权框架,专注于提供单点登录(Single Sign-On, SSO)解决方案。在JOSSO2.3版本中,它支持在Apache Tomcat这样的Java应用服务器上部署和运行...

    josso+tomcat配置之josso服务器配置(一)[参考].pdf

    josso+Tomcat配置之josso服务器配置 josso是基于Java的单点登录(SSO)服务器,能够提供身份验证和授权服务。Tomcat是Apache软件基金会开发的开源Java servlet容器。配置josso服务器需要将josso war文件部署到...

    GlassFish+josso单点登录

    为了解决这一问题,单点登录(Single Sign-On,简称SSO)技术应运而生。通过SSO技术,用户只需要登录一次就可以访问所有相互信任的应用系统,极大地提高了用户体验和安全性。本文将详细介绍如何利用GlassFish应用...

    Glassfish + josso 单点登录范例

    在现代企业级应用中,单点登录(Single Sign-On, SSO)已成为提高用户体验、增强安全性的重要手段之一。本文将详细介绍如何利用Glassfish应用服务器与JOSSO框架实现单点登录功能,并通过MySQL数据库存储用户凭证,...

    PyPI 官网下载 | python-josso-auth-0.1.3.tar.gz

    首先,了解"Josso"是Java开源身份和服务管理套件(Java Open Single Sign-On),它提供了一种统一的方式来管理和处理用户认证和授权。而"python-josso-auth"则是将Josso的功能引入到Python环境中,使得Python开发者...

    loginServer CAS / josso / LDAP / RBAC / ACL

    2. **JOSSO(Java Open Single Sign-On)**:JOSSO 是一个基于 Java 的开放源代码单点登录解决方案,旨在提供一种简单、统一的方式来管理和控制企业环境中用户的访问权限。它支持多种身份验证协议,包括 CAS,使得...

    josso-final

    "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是由耶鲁大学开发的,以其...

    java单点登录的实现与应用整合中SSO的技术实现

    - **JOSSO (Java Open Single Sign-On)**:提供基于Java的开源SSO解决方案。 - **OpenSSO**:由Sun Microsystems发起,后成为ForgeRock的一部分,提供了全面的身份管理平台。 - **SourceID**:另一个开源的SSO...

    java单点登录的实现与应用整合中SSO的技术实现.pdf

    - **开源SSO软件**:例如JOSSO(Java Open Single Sign-On)、OpenSSO、SourceID等。这些开源解决方案成本较低,但可能需要更多的自定义工作。 3. **简单实现SSO**: 对于需求不高且不想改动被集成系统的情况,...

    单点登录分析报告.pdf

    本文主要分析两种常见的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...

    SSO学习有CAS SSO配置.doc

    JOSSO(Java Open Single Sign-On)是另一个基于Java的SSO解决方案,尽管其在某些社区中的评价并不高。 学习和实施SSO时,开发者可以参考社区资源,如BEA广州UserGroup的讨论,以及David的博客和其他专家的文章,...

    CAS单点登录的经典配置,以及多数据库的处理方案

    CAS单点登录是Single Sign-On(SSO)的一种实现,允许用户一次性进行认证之后,就访问系统中不同的应用;而不需要访问每个应用时,都重新输入密码。CAS单点登录产品具有很多优点,如减少用户在不同系统中登录耗费的...

Global site tag (gtag.js) - Google Analytics