`

JOSSO Gateway Java 源码分析

阅读更多

웹 서비스 포인트 분석

 

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+tomcat配置之josso服务器配置(一)[参考].pdf

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

    GlassFish+josso单点登录

    - Josso主要由三个部分组成:Josso Gateway、Josso Agent以及Josso Console。 - Josso Gateway作为中心认证服务器,负责处理认证请求并管理用户的登录状态。 - Josso Agent用于保护受保护资源,代理用户请求并...

    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中间件

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

    JOSSO实现SSO

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

    Glassfish + 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-...

    loginServer CAS / josso / LDAP / RBAC / ACL

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

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

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

    josso-1.8.0-src.zip_Java 8_certificate x.509_java登录授权_sso 即插即用

    一个开源的J2EE-based的SSO(SSO:单一登录技术是一种认证和授权机制,它允许注册用户只需要在任一成员网站上登录一次,而后授权访问其他连接的分支网站,无需再进行验证登录)基础结构.它的目的是提供一种用来解决在...

    JAVA开源软件分类

    - **JOSSO/JBoss SSO**:实现跨应用的单点登录。 - **P2:安全框架** - **Spring Security**:用于保护Web应用免受攻击。 - **P3:企业服务总线** - **Mule ESB/WSO2 ESB/Apache Camel**:用于集成不同的系统和...

    josso-final

    "josso-final"这个标题可能指的是一个Java项目或者框架的最终版本,可能是“Java Security and Single Sign-On”(Java安全和单点登录)的简称。单点登录(Single Sign-On, SSO)是一种身份验证机制,允许用户在一次...

    6款常用的Java开源报表制作工具

    - **简介**:BIRT是一个基于Eclipse的开放源码报表系统,主要用于基于Java与J2EE的Web应用程序。它由两部分组成:一个基于Eclipse的报表设计工具和一个可以嵌入到应用程序中的运行时组件。 - **特点**: - **集成...

    推荐6款常用的Java开源报表制作工具.docx

    Java 开源报表制作工具推荐 Java 开源报表制造工具是 Java 开发者常用的报表...这 6 款 Java 开源报表制作工具涵盖了报表生成、报表设计、数据分析、商业智能等多个方面,为 Java 开发者提供了丰富的报表解决方案。

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

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

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

    其次,对于预算有限或者对SSO需求较低的项目,开源的SSO解决方案成为一种选择,比如JOSSO(Java Open Single Sign-On)、OpenSSO(现为ForgeRock的OpenAM)和SourceID。这些开源工具提供了基础的SSO功能,但可能需要...

    推荐6款常用的Java开源报表制作工具.pdf

    本文将对六款常用的 Java 开源报表制作工具进行详细的介绍和分析,为开发者提供学习和参考的资源。 一、JasperReports JasperReports 是一个基于 Java 的开源报表工具,可以在 Java 环境下像其他 IDE 报表工具一样...

    单点登录分析报告.pdf

    本文主要分析两种常见的SSO实现框架——JOSSO(Java Open Single Sign-On)和CAS(Central Authentication Service)。 JOSSO是一个基于Java和J2EE的开源SSO框架,其主要特点如下: 1. 100% Java实现,利用了JAAS...

Global site tag (gtag.js) - Google Analytics