웹 서비스 포인트 분석
josso-php-inc/class.jossoagent.php 파일 내용을 보면, 아래와 같이 모두 세 개의 웹 서비스 포인트가 있다.
- /josso/services/SSOIdentityManager?wsdl
- /josso/services/SSOIdentityProvider?wsdl
- /josso/services/SSOSessionManager?wsdl
각각 아래와 같이 접속하면, wsdl 파일이 나온다.
http://localhost:8080/josso/services/SSOIdentityManager?wsdl
http://localhost:8080/josso/services/SSOIdentityProvider?wsdl
http://localhost:8080/josso/services/SSOSessionManager?wsdl
이 가운데에서 가장 중점적으로 분석해볼 대목은, 아래와 같다.
accessSession : 이 웹 서비스를 호출하는 것만으로 인증서버측 JOSSO 세션이 연장됨. 어떻게?
resolveAuthenticationAssertion : assertionId를 one-time token으로 삼아 JOSSO 세션의 유효성 검증. 2번째 호출시에는 차단됨. 어떻게?
자세한 분석을 위해, 소스 코드를 다운로드 받아서 살펴본다.
소스 코드 다운로드 위치:
accessSession()
accessSession() 함수가 구현된 소스 위치:
$ grep -ir "implements SSOSessionManager" * |
josso-1.8.0-src/components/josso-default-sessionmgr/src/main/java/org/josso/gateway/session/service/SSOSessionManagerImpl.java |
josso-1.8.0-src/core/josso-core/src/main/java/org/josso/gateway/session/service/BaseSessionImpl.java |
위의 소스를 보면, accessSession() 함수를 호출하면, session의 _lastAccessedTime 이 연장됨을 알 수 있다.
resolveAuthenticationAssertion()
resolveAuthenticationAssertion 함수를 찾아보자. SSOIdentityProvider 는 어디에?
$ grep -ir "implements SSOIdentityProvider" * |
josso-1.8.0-src/components/josso-default-identityprovider/src/main/java/org/josso/gateway/identity/service/SSOIdentityProviderImpl.java |
$ grep -ir "AssertionManager" * |
josso-1.8.0-src/components/josso-default-assertionmgr/src/main/java/org/josso/gateway/assertion/AssertionManagerImpl.java |
_assertionStore 에서 AuthenticationAssertion를 빼내서 검사하다가 맞으면, remove 하기 때문에, 1번만 유효하고 2번째 호출에서는 아무것도 나오지 않는 것임.
findUserInSession()
class.jossoagent.php에서 가장 빈번하게 사용하는 findUserInSession 함수도 찾아서 분석해보자.
SSOIdentityManager 에 들어있는 것이므로, 찾아야 할 것은, SSOIdentityManagerImpl 이다. (꽤, 규칙적이다.)
$ grep -ir "SSOIdentityManagerImpl" * |
josso-1.8.0-src/components/josso-default-identitymgr/src/main/java/org/josso/gateway/identity/service/SSOIdentityManagerImpl.java |
얼추, 잘하면, 아예 JOSSO의 Gateway 부분을 PHP로도 변환해서 구현할 수도 있겠다. 세션 객체에 대한 가비지 콜렉션을 어떻게 할 것인지, session hijacking이나 session fixation 공격에 어떻게 대응할 것인지, 로그인 과정중에 흐름이 끊어진 Form 변수를 어떻게 보관하고 인출할 것인지, 등등 몇가지 문제들에 대해서만 보완하면, 뭐, 못할 것도 없어 보인다.
-----------
FROM: https://blog.naver.com/joycestudy/100087263766
相关推荐
josso2 第二代JOSSO(Java开放式单点登录)。 请访问以获得文档。
josso+tomcat配置之josso服务器配置(一)[参考].pdf
JOSSO(Java Open Single Sign-On)是一个开源的J2EE-based的SSO(单点登录)基础结构.它的目的是提供一种用来解决在统一平台上进行用户集中认证的方案.
单点登录JOSSO中间件~~~~~实现多web系统单点登录问题
简单的翻译 关于josso2.3 版本第9--12章节的翻译
上一篇的补充,这篇比较详细。而且补充了MD5加密算法的数据库录入实验法,所以本片更为完善,如果初次接触,建议先看上篇。
一个开源的J2EE-based的SSO(SSO:单一登录技术是一种认证和授权机制,它允许注册用户只需要在任一成员网站上登录一次,而后授权访问其他连接的分支网站,无需再进行验证登录)基础结构.它的目的是提供一种用来解决在...
本文只做交流,请各位江湖大侠指点。谢谢各位! 使用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
决赛
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 ! $...