싱글 사인온의 세 가지 일반적인 구현

기본 지식:
 
세션 원칙 (서버 측에 저장되며 각 요청이 시간을 재설정 함)
 
    클라이언트가 요청을 보낼 때 서버는 jsesion이라는 쿠키가 있는지 확인합니다.
    그렇지 않은 경우 서버는 jsession이라는 쿠키를 생성하고 쿠키 값은 uuid이며 키가 uuid 인 세션이 동시에 생성되고 jsession이라는 쿠키가 동시에 클라이언트에 반환됩니다.
    클라이언트에 쿠키가 있고 시간 초과되지 않은 경우 jsession이라는 쿠키가 다시 요청 될 때 요청 헤더로 직접 반환됩니다.
 
쿠키 원칙 (클라이언트에 저장되며 각 요청에 대해 시간이 재설정되지 않음)
 
           서버 측에서 쿠키 개체를 인스턴스화 할 때 문자열 만 저장할 수 있습니다.
           쿠키 및 범위 및 유효 경로를 설정하는 제한된 시간
           응답 개체를 따라 클라이언트에 응답
           브라우저가 쿠키를 수신하면 io 작업을 수행하고이를 로컬 폴더에 저장합니다.
           사용자가 요청을 다시 보낼 때 하나 또는 일부 쿠키를 얻을 수있는 한 브라우저는 자동으로 클라이언트에 요청을 보냅니다.
 
싱글 사인온 ( SingleSignOn, SSO) : 
 
고객이 프로젝트에 로그인 한 후 다른 관련 프로젝트는 반복적으로 로그인 할 필요가 없습니다.
 
 
첫 번째 사진 :
 
1. 세션 브로드 캐스트 메커니즘을 사용하여
 
    클러스터에 참여하는 각 노드의 세션 상태는 클러스터의 다른 모든 노드에 복제되며, 세션이 변경 될 때마다 세션 데이터를 다시 복제해야합니다.
    Tomcat, JBoss 등 모두 이러한 기능을 제공하며, 그중 Tomcat은 클러스터 노드 브로드 캐스트 복제를 사용하고 JBoss는 쌍을 이루는 복제 메커니즘을 사용합니다.
    장점 : 각 노드에는 세션의 사본이 있으며 노드에 문제가있을 때 다른 노드가 작업을 인수 할 수 있습니다.
    단점 : 노드 간의 세션 동기화는 많은 시스템 리소스를 차지하고 클러스터 노드 수가 증가하면 전체 성능이 급격히 떨어집니다.
 
2. 쿠키 + redis를 사용하여
    
    (1) 클라이언트가 처음 로그인하면 서버를 통해 쿠키 및 해당 세션을 생성합니다.
    (2) Redis에서 최초 로그인시 생성 된 쿠키 및 User 객체 (로그인에 필요한 정보)를 key-value 형태로 저장
    (3) 클라이언트가 로그인 작업이 필요한 다른 페이지에 다시 액세스하면 클라이언트의 쿠키가 비교를 위해 Redis로 이동하고, 존재하는 경우 로그인 된 것으로 간주합니다.
    (4) 세션에 유효 기간이 있으므로 Redis에서 해당 유효 시간을 설정할 수 있습니다.
 
3. 토큰 구현 사용
    
    (1) SSO 서비스 사이트 구축
    (2) 클라이언트가 처음 로그인 할 때 SSO 사이트에서 로그인 자격 증명을 얻습니다.
    (3) 클라이언트는 로그인 자격 증명을 사용하여 서버에 로그인합니다.
    (4) 서버는 클라이언트의 로그인 자격 증명을 사용하여 확인을위한 SSO 서비스 사이트를 찾습니다.
    (5) SSO 확인이 성공하고 서버에 클라이언트가 로그인 할 수 있음을 알리고 다음 단계로 진행합니다.
 
    

추천

출처blog.csdn.net/weixin_43562937/article/details/106698175