ava와 PHP를 위한 SSO 모듈인 JOSS(Java Open Single Sign-On)를 정리한다. JOSSO는 J2EE와 Spring 기반의 SSO 솔루션 이다.
- 홈페이지 : http://www.josso.org/, http://sourceforge.net/projects/josso/
- 다운로드 : http://sourceforge.net/project/showfiles.php?group_id=116854
- 라이센스 : LGPL 2.1
- 플랫폼 : Java, PHP
목차
설치 가이드 - JOSSO Gateway
Windows 환경에서 Apache Tomcat 6.0.16에 JOSSO Gateway(Idp)를 설치 한다. 사용자 인증을 위해서는 MySQL 5.0.51을 사용 한다.
설치전 사전 준비 사항
JOSSO용 Database 설정
- MySQL에 JOSSO에서 사용할 Schmea를 등록한다.
- MySQL Administrator에 root 관리자로 로그인 한다.
- 좌측 상단 창에서 "Catalogs"를 선택한다.
- 좌측 하단의 "Schemata" 창에서 우측 마우스를 누른다.
- "Create New Schema" 메뉴를 선택하여 Schema를 생성한다.
- Schema 생성화면에서 "Schema name"으로 "jossodb"를 입력한다.
- MySQL에 JOSSO에서 사용할 사용자를 등록한다.
- 좌측 상단 창에서 "User Administration"을 선택한다.
- 좌측 하단의 "Users Accounts" 창에서 우측 마우스를 누른다.
- "Add new user" 메뉴를 선택하여 사용자를 생성한다.
- "User Information" 탭에서 "MySQL User"("josso"), "Password", "Confirm Password" 등을 등록한다.
- MySQL에 JOSSO에서 사용할 사용자의 권한을 설정한다.
- "Schema Privileges" 탭에서 사용자가 사용할 Schema("jossodb")를 선택한다.
- "Available Privileges"의 모든 권한을 "Assigned Privileges"로 이동한다.
- "Apply changes" 버튼을 눌려 등록된 정보를 저장한다.
- MySQL Query Browser에 접속한다.
- 상단의 "Tools" 메뉴에서 "MySQL Query Browser" 메뉴를 선택한다.
- 사용자의 MySQL 데이터베이스 접속 정보를 추가한다.
- 우측의 "Schemata" 탭에서 "mysql"을 더블 클릭하여 선택한다.
- grant all privileges on jossodb.* to josso@localhost identified by '암호'; (사용자에게 Schmea에 대한 권한을 추가)
- flush privileges; (위 명령을 통해 설정한 권한을 데이터베이스에 반영)
- select host, user, password from user order by user, host; (사용자의 접속 정보 확인)
- MySQL Query Browser가 아니라 DOS 창에서 접속 정보를 추가하는 방법
mysql -uroot -pxxx mysql grant all privileges on jossodb.* to josso@localhost identified by '암호'; flush privileges; select host, user, password from user order by user, host; exit
- MySQL Query Browser를 실행하여 jossodb에 josso 사용자로 로그인 한다.
- 아래 SQL문을 실행하여 JOSSO에서 사용할 table을 생성 한다.
- MySQL에서 password는 예약어이므로 password라는 항목명은 passwd로 변경 하여 테이블을 생성 하였다.
DROP TABLE IF EXISTS `JOSSO_ROLE`; CREATE TABLE `JOSSO_ROLE` ( `name` varchar(16) NOT NULL, `description` varchar(64) DEFAULT NULL, PRIMARY KEY (`name`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; DROP TABLE IF EXISTS `JOSSO_USER`; CREATE TABLE `JOSSO_USER` ( `login` varchar(16) NOT NULL, `passwd` varchar(20) NOT NULL, `name` varchar(64) DEFAULT NULL, `description` varchar(64) DEFAULT NULL, PRIMARY KEY (`login`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; DROP TABLE IF EXISTS `JOSSO_USER_PROPERTY`; CREATE TABLE `JOSSO_USER_PROPERTY` ( `login` varchar(16) NOT NULL, `name` varchar(255) NOT NULL, `value` varchar(255) NOT NULL, PRIMARY KEY (`login`,`name`), CONSTRAINT `JOSSO_USER_PROPERTY_ibfk_1` FOREIGN KEY (`login`) REFERENCES `JOSSO_USER` (`login`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; DROP TABLE IF EXISTS `JOSSO_USER_ROLE`; CREATE TABLE `JOSSO_USER_ROLE` ( `login` varchar(16) NOT NULL, `name` varchar(255) NOT NULL, PRIMARY KEY (`login`,`name`), KEY `name` (`name`), CONSTRAINT `JOSSO_USER_ROLE_ibfk_2` FOREIGN KEY (`login`) REFERENCES `JOSSO_USER` (`login`), CONSTRAINT `JOSSO_USER_ROLE_ibfk_1` FOREIGN KEY (`name`) REFERENCES `JOSSO_ROLE` (`name`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
- InnoDB를 사용하지 않을 경우에는 "ENGINE=InnoDB DEFAULT CHARSET=utf8;" 대신 "TYPE=MyISAM;"를 사용한다.
- JOSSO가 정상 실행되는지 테스트를 원할 경우 다음 SQL문을 실행한다.
- MySQL에서 password는 예약어이므로 password라는 항목명은 passwd로 변경 하여 SQL문을 작성 하였다.
INSERT INTO JOSSO_ROLE (NAME,DESCRIPTION) VALUES('role1','The Role1'); INSERT INTO JOSSO_ROLE (NAME,DESCRIPTION) VALUES('role2','The Role2'); INSERT INTO JOSSO_ROLE (NAME,DESCRIPTION) VALUES('role3','The Role3'); INSERT INTO JOSSO_USER (LOGIN,PASSWD,DESCRIPTION)VALUES('user1', 'user1pwd', 'The User1'); INSERT INTO JOSSO_USER_ROLE (LOGIN,NAME) VALUES('user1', 'role1'); INSERT INTO JOSSO_USER_ROLE (LOGIN,NAME) VALUES('user1', 'role2'); INSERT INTO JOSSO_USER_PROPERTY(LOGIN,NAME,VALUE)VALUES('user1', 'user.name', 'User1 Name'); INSERT INTO JOSSO_USER_PROPERTY(LOGIN,NAME,VALUE)VALUES('user1', 'user.lastName', 'User1 Last Name'); INSERT INTO JOSSO_USER_PROPERTY(LOGIN,NAME,VALUE)VALUES('user1', 'user.registrationDate', 'User1 Registration Date'); INSERT INTO JOSSO_USER (LOGIN,PASSWD,DESCRIPTION)VALUES('user2', 'user2pwd', 'The User2') ; INSERT INTO JOSSO_USER_ROLE (LOGIN,NAME)VALUES('user2', 'role3'); INSERT INTO JOSSO_USER_PROPERTY(LOGIN,NAME,VALUE)VALUES('user2', 'user.name', 'User2 Name'); INSERT INTO JOSSO_USER_PROPERTY(LOGIN,NAME,VALUE)VALUES('user2', 'user.lastName', 'User2 Last Name'); INSERT INTO JOSSO_USER_PROPERTY(LOGIN,NAME,VALUE)VALUES('user2', 'user.registrationDate', 'User2 Registration Date');
- 참고 문헌
JOSSO Gateway 설치
- 다운로드 사이트에서 josso-1.8.0.zip를 다운로드 한다.
- 압축을 풀어 d:/josso 폴더에 복사한다.
- DOS 창에서 JOSSO Agent를 다음과 같이 설치 한다.
- Windows Vista의 경우, 관리자 권한으로 실행 한다.
cd d:/josso/bin josso-gsh.bat gateway install --target "$TOMCAT_HOME" --platform tc60 exit
- $JAVA_HOME 변수에 공백이 들어 있어 "지정된 경로를 찾을 수 없습니다."라는 오류가 발생할 경우에는, PATH 환경 변수에 $JAVA_HOME/bin 폴더를 추가하고 josso-gsh.bat를 다음과 같이 수정 한다.
"%JAVACMD%" %JAVA_OPTS% -jar "%BOOTJAR%" %ARGS% 를 삭제하고 아래 라인을 추가 java %JAVA_OPTS% -jar "%BOOTJAR%" %ARGS%
- 설치가 정상적으로 진행이 되면 $TOMCAT_HOME 아래에서 다음 사항을 확인할 수 있다.
- $TOMCAT_HOME/lib/josso-* 파일 들
- $TOMCAT_HOME/webapps/josso 폴더
- 설치가 완료된 후 d:/josso 폴더를 삭제한다.
- Ubnutu Server에서 JOSSO 설치
cd /usr/share/tomcat6 ln ln -s /etc/tomcat6 conf cd ~/josso/josso-1.8.1/bin ./josso-gsh gateway install --target "/usr/share/tomcat6" --platform tc60 exit cd /var/lib/tomcat6/webapps ln -s /usr/share/tomcat6/webapps/josso josso
JOSSO Gateway 환경 설정
- MySQL용 JDBC Driver를 설정한다.
- MySQL JDBC Driver 다운로드 사이트에 접속 한다.
- "JDBC Driver for MySQL (Connector/J)" 아래에 있는 "Download" 링크를 선택한다.
- Source and Binaries (zip) 옆에 있는 링크를 선택하여 mysql-connector-java-5.1.7.zip 파일을 다운로드 한다.
- zip 파일의 압축을 풀어 안에 있는 mysql-connector-java-5.1.7-bin.jar 파일을 $TOMCAT_HOME/webapps/josso/WEB-INF/lib 아래에 복사하고 Tomcat을 재기동 한다.
- $TOMCAT_HOME/lib/josso-gateway-config.xml 파일에 사용자 정보 저장소로 DB 설정 정보를 사용하도록 수정 한다.
<!-- Identity, Session and Assertion Stores configuration --> <s:import resource="josso-gateway-db-stores.xml" /> <!-- <s:import resource="josso-gateway-memory-stores.xml" /> <s:import resource="josso-gateway-db-stores.xml" /> <s:import resource="josso-gateway-ldap-stores.xml" /> -->
- $TOMCAT_HOME/lib/josso-gateway-db-stores.xml 파일에서 DB 정보를 설정 한다.
- 기존에 있는 id="josso-identity-store" 에 해당하는 것을 삭제하고, 아래 사항을 추가 한다.
- MySQL에서 password는 예약어이므로 password라는 항목명은 passwd로 변경 하여 테이블을 생성 하였으므로 SQL문도 그에 맞도록 수정 하였다.
<db-istore:jdbc-store id="josso-identity-store" driverName="com.mysql.jdbc.Driver" connectionURL="jdbc:mysql://localhost:3306/jossodb" connectionName="josso" connectionPassword="암호" userQueryString="SELECT LOGIN AS NAME FROM JOSSO_USER WHERE LOGIN = ?" rolesQueryString="SELECT NAME AS ROLE FROM JOSSO_USER_ROLE WHERE LOGIN = ?" credentialsQueryString="SELECT LOGIN AS USERNAME, PASSWD password FROM JOSSO_USER WHERE LOGIN = ?" userPropertiesQueryString="SELECT NAME, VALUE FROM JOSSO_USER_PROPERTY WHERE LOGIN = ?" resetCredentialDml="UPDATE JOSSO_USER SET PASSWD = ? WHERE LOGIN = ?" relayCredentialQueryString="SELECT LOGIN FROM JOSSO_USER WHERE #?# = ?" />
- $TOMCAT_HOME/lib/josso-gateway-auth.xml 파일에서 기본 인증 정보를 수정한다.
- hashAlgorithm, hashEncoding를 삭제하여 암호가 Plan Text로 저장되도록 한다.
<basic-authscheme:basic-auth-scheme id="josso-basic-authentication" ignorePasswordCase="false" ignoreUserCase="false"> <basic-authscheme:credentialStore> <s:ref bean="josso-identity-store"/> </basic-authscheme:credentialStore> <basic-authscheme:credentialStoreKeyAdapter> <s:ref bean="josso-simple-key-adapter"/> </basic-authscheme:credentialStoreKeyAdapter> </basic-authscheme:basic-auth-scheme>
설치 가이드 - PHP용 Agent
Windows 환경에서 PHP 5.2.5에 JOSSO Agent(SP)를 설치 한다.
설치전 사전 준비 사항
- PHP에 GD 확장팩 설치
- PHP에 GetText 확장팩 설치
- PHP에 IMAP 확장팩 설치
- PHP에 mysql, mysqli 확장팩 설치
PHP용 JOSSO Agent 설치
- 다운로드 사이트에서 josso-1.8.0.zip를 다운로드 한다.
- 압축을 풀어 d:/josso 폴더에 복사한다.
- d:/josso/dist/agents/src/josso-php-agent-1.8.0-.zip의 압축을 풀어 d:/josso_php 폴더에 복사한다.
- Apache HTTP Server의 Document_root 아래에 d:/josso_php/josso-php-partnerapp 폴더를 통채로 복사한다.
- PHP에 JOSSO Agent를 설정 한다.
mkdir c:/php/includes c:/php/includes 아래에 d:/josso_php/josso-php-inc 폴더를 통채로 복사한다.
- JOSSO Agent 설정 파일은 c:/php/includes/josso-php-inc/josso-cfg.inc 이다.
- $PHP_HOME에 있는 php.ini 파일에서 다음과 같이 수정 한다.
include_path = ".;c:\php\includes" auto_prepend_file = "josso-php-inc\josso.php"
- 테스트를 위해 d/:/josso/dist/samples/apps/josso-partner-php-1.8.0-.zip 파일의 압축을 풀어 index.php 파일을 Apache HTTP Server의 Document Root에 index_josso.php로 이름을 바꾸어 저장 한다.
- 설치가 완료된 후 d:/josso 폴더와 d:/joss_php 폴더를 삭제하고 Apache HTTP Server를 재기동 한다.
PHP용 JOSSO Agent 환경 설정
- JOSSO Agent 설정 파일(c:/php/includes/josso-php-inc/josso-cfg.inc)에서 다음을 수정 한다.
- JOSSO Gateway의 IP 또는 URL(예, www.josso.com)을 사용하여 설정한다.
- josso_endpoint는 JOSSO Gateway의 IP를 사용하여 설정한다.
// Josso agent configuration $josso_gatewayLoginUrl = 'http://Gateway_서버_IP_or_URL:8080/josso/signon/login.do'; $josso_gatewayLogoutUrl = 'http://Gateway_서버_IP_or_URL:8080/josso/signon/logout.do'; // WS client configuration : $josso_endpoint = 'http://Gateway_서버_IP:8080';
- JOSSO 설정 확인
- http://localhost/josso-php-partnerapp/index_josso.php 사이트에서 로그인하여 화면이 제대로 뜨는지 확인 한다.
- 테스트가 끝나면 Document Root에 있는 index_josso.php 파일을 삭제 한다.
설치 가이드 - Tomcat용 Agent
Windows 환경에서 Apache Tomcat 6.0.16에 JOSSO Agent(SP)를 설치 한다. 여기서는 JOSSO Gateway가 설치된 장비에 JOSSO Agent를 설치 한다.
설치전 사전 준비 사항
- Java SE Development Kit 6 Update 4 (JDK 1.6.0_04-b12) 설치
- Apache HTTP Server 2.2.8 with OpenSSL 0.9.8g 설치
- Apache Tomcat 6.0.16 설치
Tomcat용 JOSSO Agent 설치
- 다운로드 사이트에서 josso-1.8.0.zip를 다운로드 한다.
- 압축을 풀어 d:/josso 폴더에 복사한다.
- 도스창을 띄워 Apache Tomcat 6.x용 Agent를 설치 한다.
cd d:/josso/bin josso-gsh.bat agent install --target "$TOMCAT_HOME" --platform tc60 exit
- 설치 후 Tomcat이 정상적으로 기동되지 않을 경우 다음과 같이 조치 한다.
- 새로 생성된 $TOMCAT_HOME/bin/setenv.bat과 setenv.sh를 삭제 한다.
- Java 환경 변수에 "Djava.security.auth.login.config"을 추가 한다.
- 화면 우측 하단의 "Apache Tomcat" 아이콘을 오른쪽 마우스로 선택 한다.
- "Configure..." 메뉴를 선택 한다.
- "Java" 탭에서 "Java Options"에 "-Djava.security.auth.login.config=%CATALINA_HOME%/conf/jaas.conf"을 추가 한다.
- 기존 설치된 Web Application과 충돌이 발생할 경우 다음과 같이 조치 한다.
- $TOMCAT_HOME/lib 에 새로 추가된 jar 파일을 기존 Web Application의 lib 파일과 버전을 비교하여 최신 버전을 사용한다.
- Confluence의 경우, xbean-spring-3.4.3.jar 에서 충돌이 발생하여 Confluence의 Session ID를 가져오지 못한다. (java.lang.NullPointerException)
Tomcat용 JOSSO Agent 환경 설정
- JOSSO Agent 설정 파일($TOMCAT_HOME/lib/josso-agent-config.xml)을 수정 한다.
- JOSSO Gateway의 IP 또는 URL(예, www.josso.com)을 사용하여 설정한다.
- josso_endpoint는 JOSSO Gateway의 IP를 사용하여 설정한다.
<gatewayLoginUrl>http://Gateway_서버_IP_or_URL:8080/josso/signon/login.do</gatewayLoginUrl> <gatewayLogoutUrl>http://Gateway_서버_IP_or_URL:8080/josso/signon/logout.do</gatewayLogoutUrl> <protocol:ws-service-locator endpoint="http://Gateway_서버_IP:8080" /> <agent:partner-app id="Confluence" context="/confluence"/>
Java Web Application용 Agent
위에서 정리한 Tomcat용 JOSSO Agent는 Tomcat에 설치된 모든 웹 애플리케이션에 적용(Agent는 전체에 적용이 되나 설정에 따라 필요한 프로그램만 SSO 처리가 가능)이 되므로 library 파일 등에서 충돌이 발생할 수 있다. 그러서 여기서는 하나의 Web Application에 Filter 기능을 사용하여 적용이 가능한 자체 개발한 JOSSO Web Application Agent를 소개 한다.
Tomcat용 JOSSO Agent을 참조하여 JOSSO Web Application Agent를 제작 하였으므로 관련 library는 Tomcat용 JOSSO Agent에 있는 것을 사용한다.
- JOSSO와 Web Service를 위한 라이브러리 파일 설정
- /WEB-INF/lib에 josso-ws-1.8.0.jar 파일 복사
- Agent 적용을 위한 Filter 설정
- /WEB-INF/web.xml 파일에 다음을 추가 한다.
<filter> <filter-name>jossoAgent</filter-name> <filter-class>pnus.josso.LoginFilter</filter-class> <! -- Filter class 명 --> <init-param> <param-name>jossoGatewayLoginUrl</param-name> <param-value>http://localhost/josso/signon/login.do</param-value> <! -- JOSSO 로그인 화면 --> </init-param> <init-param> <param-name>jossoGatewayLogoutUrl</param-name> <param-value>http://localhost/josso/signon/logout.do</param-value> <! -- JOSSO 로그아웃 화면 --> </init-param> <init-param> <param-name>jossoEndpoint</param-name> <param-value>http://localhost</param-value> <! -- JOSSO 웹 서비스 요청을 위한 시작 URL --> </init-param> <init-param> <param-name>flag_josso</param-name> <param-value>true</param-value> <! -- true일 경우에만 JOSSO 적용 --> </init-param> </filter> <filter> <filter-name>login</filter-name> <filter-class>com.atlassian.seraph.filter.LoginFilter</filter-class> </filter> <filter-mapping> <filter-name>jossoAgent</filter-name> <url-pattern>*.action</url-pattern> <! -- JOSSO 적용을 위한 filter mapping --> </filter-mapping> <! -- 여기서는 *.action과 *.jsp만 하였으나 필요할 경우 추가할 것 --> <filter-mapping> <filter-name>jossoAgent</filter-name> <url-pattern>*.jsp</url-pattern> </filter-mapping>
- 실제 JOSSO와 통신하여 SSO 처리를 하는 LoginFilter.java를 컴파일하여 /WEB-INF/classes/pnus/josso/LoginFilter.class 로 복사 한다.
- Tomcat을 재기동하여 JOSSO Web Service Agent가 정상적으로 동작하는지 확인 한다.
사용자 가이드
JOSSO 지원 플랫폼
- JOSSO 지원 플랫폼
- Gateway : JOSSO에서 Agent의 요청을 받아 사용자 인증을 처리하는 서비스
- Agent : 사용자 프로그램이 수행되는 곳에 설치되어 Gateway와 통신하여 인증 처리를 하는 서비스
PHP에 JOSSO 적용
- JOSSO Agent가 PHP에 제공하는 정보 명세
$josso_agent : JOSSO Agent $ssoSessionId : JOSSO Session ID $user = $josso_agent.getUserInSession() : 세션에 있는 사용자 정보 반환 $roles = $josso_agent->findRolesBySSOSessionId($sessionId) : Roles을 반환 $josso_agent.isUserInRole($rolename) : 해당 Role에 속하는지 여부 반환 $user->getName() : 사용자 명(사용자 아이디)을 반환 $user->getProperties() : 사용자의 모든 Properties를 반환 $user->getProperty('user.name') : 사용자의 해당 Property를 반환
- JOSSO Agent가 PHP에 제공하는 함수 명세
jossoRequestLogin() : 로그인 페이지로 가고 싶을 때 호출 jossoCreateLoginUrl() : 로그인 URL을 반환 jossoRequestLoginForUrl($currentUrl) : 로그인 페이지 호출 로그인 후 인수로 전달된 페이지 호출 jossoRequestLogout() : 로그아웃을 하고 싶을 때 호출 jossoCreateLogoutUrl() : 로그아웃 URL을 반환 jossoRequestLogoutForUrl($currentUrl) : 로그아웃 페이지 호출 로그아웃 후 인수로 전달된 페이지 호출
Java에 JOSSO 적용
Tomcat용 JOSSO Agent 동작 원리
- josso-tomcat60-agent-1.8.0.jar에서 다음 함수가 요청을 받아 처리함
- public void invoke(Request request, Response response)
관리자 가이드
JOSSO 로그
- 로그 설정
- $JOSSO_HOME/WEB-INF/web.xml
<servlet-name>action</servlet-name> 에서 <init-param> <param-name>debug</param-name> <param-value>5</param-value> 이 값을 변경하여 로그를 남김 </init-param>
- 로그 파일
- $TOMCAT_HOME/logs/catalina.2009-03-20.log
Single Sign On 적용 방안
- JOSSO의 SSO 적용 방안
SSO(Single-Sign-On)을 하기 위해서는 자동적으로 세션 정보가 생성되고 관리 되어야 한다. 다음과 같은 규칙을 SSO가 필요한 프로그램에 적용한다.
- 주의 사항 : 아래 규칙은 프로그램에서 세션 정보를 초기화 시키기 전에 추가 하여야 한다.
- JOSSO의 SSO 정보가 없을 경우
if (접속 시스템의 세션 정보가 있으면) { 접속 시스템의 세션 정보를 삭제 한다. } if (로그인 또는 로그아웃 요청일 경우) { 분기 화면 정보로 디폴트 페이지를 설정 한다. } else { 분기 화면 정보로 접속하려던 페이지를 설정 한다. } JOSSO 로그인 화면을 보여 준다. JOSSO에 로그인이 되었을 경우 분기 화면을 보여 준다.
- JOSSO의 SSO 정보가 있을 경우
if (로그인 요청일 경우) { 디폴트 페이지를 호출 한다. exit; } if (로그아웃 요청일 경우) [ 접속 시스템의 세션 정보를 삭제 한다. 반드시 접속 시스템에서 사용하는 세션 정보만 삭제 한다. 모든 세션 정보를 삭제하면 JOSSO도 비정상 동작 한다. 분기 화면 정보로 디폴트 페이지를 설정 한다. JOSSO에서 로그아웃을 한다. JOSSO 로그인 화면을 보여 준다. exit } if (접속 시스템의 세션 정보와 JOSSO의 세션 정보가 틀릴 경우) { 접속 시스템의 세션 정보를 삭제 한다. } if (접속 시스템의 세션 정보가 없을 경우) { 접속 시스템의 세션 정보를 생성 한다. } 원래 페이지 코드를 계속 처리 한다.
- 사용자 정보 동기화 방안
- 사용자 등록, 수정, 삭제, 암호 변경 시 SSO가 필요한 모든 시스템의 사용자 정보의 관리 방안을 수립하여야 한다.
- 1안. 각 시스템에서 별도 관리 (권장 방안)
- JOSSO에서 사용자 등록, 수정, 삭제, 암호 변경 화면을 제공
- JOSSO에서 작업 수행 시 SSO가 필요한 모든 시스템의 사용자 정보를 동기화 한다.
- 권한 설정 등의 부가 작업은 각 시스템에서 진행 한다.
- 2안. JOSSO에서 통합 관리
- 각 시스템의 세션에 사용자 정보를 제공하는 것은 JOSSO에서 제공하는 사용자 정보로 대체 한다.
- 각 시스템에서 사용자 정보를 사용하는 부분을 JOSSO에서 사용자 정보를 읽는 것으로 대체 한다.
- 역할 정보 동기화 방안
- 역할 및 권한 정보는 각 시스템에서 별도로 관리 한다.
- JOSSO에서 통합 관리할 경우에는, 각 시스템의 권한 설정을 제거하고 JOSSO에서 권한 설정을 하여야 하므로 아주 복잡하다. JOSSO는 권한 관리를 위한 상세한 기능을 제공하고 있지 않다.
세션 Timeout 시간 설정
- $TOMCAT_HOME/webapps/josso/WEB-INF/web.xml에서 세션 Timeout 시간을 분단위로 설정 한다.
<session-config> <session-timeout>30</session-timeout> </session-config>
로그인 화면 디자인 변경
- 아래 두개의 파일의 디자인을 변경 한다.
- $TOMCAT_HOME/webapps/josso/josso_layout.jsp : 화면 레이아웃
- $TOMCAT_HOME/webapps/josso/signon/usernamePasswordLogin.jsp : 로그인 화면 내용
JOSSO Gateway의 LDAP 설정
참고 문헌
- OpenSSO : Sun에서 오픈소스로 공개한 SSO 솔루션
- Java/OpenSourceProject
- Open Source SSO 조사하기, 2010.4
- JOSSO, 2009.9
--------------------------------
FROM: http://www.jopenbusiness.com/mediawiki/index.php/JOSSO
相关推荐
josso+Tomcat配置之josso服务器配置 josso是基于Java的单点登录(SSO)服务器,能够提供身份验证和授权服务。Tomcat是Apache软件基金会开发的开源Java servlet容器。配置josso服务器需要将josso war文件部署到...
JOSSO,全称为Java Open Single Sign-On Project,是一个开源的单点登录解决方案,旨在简化企业环境中多应用系统的身份验证流程。 JOSSO中间件的核心功能是提供一个中央身份验证服务(Central Authentication ...
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)基础设施。其核心目标是为用户提供一种集中式、平台无关的...
### GlassFish + Josso + MySQL 实现单点登录详解 #### 一、引言 随着企业信息化建设的深入,多系统间的用户身份认证与管理变得日益复杂。为了解决这一问题,单点登录(Single Sign-On,简称SSO)技术应运而生。...
### 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 ...
JOSSO,全称为Java Open Single Sign-On Project,是一个基于Java平台的开源单点登录(Single Sign-On,简称SSO)解决方案。第二代JOSSO(josso2)旨在提供一个标准化、可扩展且安全的SSO框架,使得用户在访问多个...
一个开源的J2EE-based的SSO(SSO:单一登录技术是一种认证和授权机制,它允许注册用户只需要在任一成员网站上登录一次,而后授权访问其他连接的分支网站,无需再进行验证登录)基础结构.它的目的是提供一种用来解决在...
"josso-final"这个标题可能指的是一个Java项目或者框架的最终版本,可能是“Java Security and Single Sign-On”(Java安全和单点登录)的简称。单点登录(Single Sign-On, SSO)是一种身份验证机制,允许用户在一次...
Atricore的JOSSO是一种开源且受商业支持的Internet单点登录(FSSO)解决方案,用于点击和基于标准(SAML2)的Internet规模SSO实施。 欲了解更多信息,请通过以下网址与我们联系:http://www.josso.org
本文主要分析两种常见的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的实施和管理,适用于多应用环境。 ...
JOSSO(Java Open Single Sign-On)是另一个基于Java的SSO解决方案,尽管其在某些社区中的评价并不高。 学习和实施SSO时,开发者可以参考社区资源,如BEA广州UserGroup的讨论,以及David的博客和其他专家的文章,...
josso 是另一个 Java 写的单点登录产品,通常认为比 OpenSSO 更成熟一些。CAS 是耶鲁大学开发的单点登录产品,也是我们最后选定的单点登录产品。CAS 的优点很多,例如设计理念先进、体系结构合理、配置简单、客户端...
JOSSO利用了JAAS、Web服务、EJB、Struts、Servlet/JSP等标准技术,可轻松集成到各种Java环境中,实现平台无关的用户验证。 这些解决方案的存在,为解决企业中的身份验证问题提供了有效工具,既提高了用户工作效率,...
开源 SSO 软件包括 OpenSSO、JOSSO 和 CAS 等。这些软件通常具有高安全性、灵活性和可扩展性,同时也可以根据需要进行自定义。 4. CAS 介绍 CAS 是耶鲁大学开发的一种单点登录产品,具有先进的设计理念、合理的...
- JOSSO、OpenNMS、AppFuse 等第三方认证服务 2. 简化配置与依赖注入 Spring Security 通过依赖注入原理简化了安全配置,使得开发者可以更轻松地集成和自定义安全组件。传统的 Spring Bean 配置方式往往需要手动...
**开源SSO软件**如OpenSSO(基于Sun Java System Access Manager)、JOSSO和CAS(Yale University开发)。开源SSO产品的优势在于成本低、灵活性高,且通常有活跃的社区支持。例如,CAS以其先进的设计理念、合理的...