웹 서비스 포인트 분석
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
相关推荐
josso是基于Java的单点登录(SSO)服务器,能够提供身份验证和授权服务。Tomcat是Apache软件基金会开发的开源Java servlet容器。配置josso服务器需要将josso war文件部署到Tomcat服务器上,并配置josso认证服务器。 ...
- Josso主要由三个部分组成:Josso Gateway、Josso Agent以及Josso Console。 - Josso Gateway作为中心认证服务器,负责处理认证请求并管理用户的登录状态。 - Josso Agent用于保护受保护资源,代理用户请求并...
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,全称为Java Open Single Sign-On Project,是一个开源的单点登录解决方案,旨在简化企业环境中多应用系统的身份验证流程。 JOSSO中间件的核心功能是提供一个中央身份验证服务(Central Authentication ...
JOSSO(Java Open Single Sign-On)是一个开源的、基于 J2EE 的单点登录(Single Sign-On, SSO)基础设施。其核心目标是为用户提供一种集中式、平台无关的用户验证和授权解决方案。通过 JOSSO,可以在统一的平台上...
将MySQL连接器`mysql-connector-java-5.0.5-bin.jar`文件放入`glassfish/domains/domain1/applications/josso-gateway-web-1.8.0/WEB-INF/lib`目录下。 #### 四、JOSSO配置 ##### 1. 修改配置文件 - 更新`josso-...
2. **JOSSO(Java Open Single Sign-On)**:JOSSO 是一个基于 Java 的开放源代码单点登录解决方案,旨在提供一种简单、统一的方式来管理和控制企业环境中用户的访问权限。它支持多种身份验证协议,包括 CAS,使得...
首先,了解"Josso"是Java开源身份和服务管理套件(Java Open Single Sign-On),它提供了一种统一的方式来管理和处理用户认证和授权。而"python-josso-auth"则是将Josso的功能引入到Python环境中,使得Python开发者...
一个开源的J2EE-based的SSO(SSO:单一登录技术是一种认证和授权机制,它允许注册用户只需要在任一成员网站上登录一次,而后授权访问其他连接的分支网站,无需再进行验证登录)基础结构.它的目的是提供一种用来解决在...
- **JOSSO/JBoss SSO**:实现跨应用的单点登录。 - **P2:安全框架** - **Spring Security**:用于保护Web应用免受攻击。 - **P3:企业服务总线** - **Mule ESB/WSO2 ESB/Apache Camel**:用于集成不同的系统和...
"josso-final"这个标题可能指的是一个Java项目或者框架的最终版本,可能是“Java Security and Single Sign-On”(Java安全和单点登录)的简称。单点登录(Single Sign-On, SSO)是一种身份验证机制,允许用户在一次...
- **简介**:BIRT是一个基于Eclipse的开放源码报表系统,主要用于基于Java与J2EE的Web应用程序。它由两部分组成:一个基于Eclipse的报表设计工具和一个可以嵌入到应用程序中的运行时组件。 - **特点**: - **集成...
Java 开源报表制作工具推荐 Java 开源报表制造工具是 Java 开发者常用的报表...这 6 款 Java 开源报表制作工具涵盖了报表生成、报表设计、数据分析、商业智能等多个方面,为 Java 开发者提供了丰富的报表解决方案。
- **JOSSO (Java Open Single Sign-On)**:提供基于Java的开源SSO解决方案。 - **OpenSSO**:由Sun Microsystems发起,后成为ForgeRock的一部分,提供了全面的身份管理平台。 - **SourceID**:另一个开源的SSO...
其次,对于预算有限或者对SSO需求较低的项目,开源的SSO解决方案成为一种选择,比如JOSSO(Java Open Single Sign-On)、OpenSSO(现为ForgeRock的OpenAM)和SourceID。这些开源工具提供了基础的SSO功能,但可能需要...
本文将对六款常用的 Java 开源报表制作工具进行详细的介绍和分析,为开发者提供学习和参考的资源。 一、JasperReports JasperReports 是一个基于 Java 的开源报表工具,可以在 Java 环境下像其他 IDE 报表工具一样...
本文主要分析两种常见的SSO实现框架——JOSSO(Java Open Single Sign-On)和CAS(Central Authentication Service)。 JOSSO是一个基于Java和J2EE的开源SSO框架,其主要特点如下: 1. 100% Java实现,利用了JAAS...