Spring Boot/Angular 통합 Keycloak 단일 로그 인 기능 구현

Keycloak
Keycloak현대 응용 과 서비스 에 개 원 된 인증 과 방문 관 리 를 제공한다.즉,흔히 말 하 는 인증 과 권한 수여 이다.Keycloak 은 OpenID,OAuth 2.0,SAML 2.0 프로 토 콜 을 지원 합 니 다.사용자 등록,사용자 관리,권한 관리 지원;프 록 시 OpenID,SAML 2.0 IDP 를 지원 하고 GitHub,LinkedIn 등 제3자 로그 인 을 지원 하 며 LDAP 와 Active Directory 통합 을 지원 합 니 다.사용자 정의 인증 프로 세 스,사용자 정의 인터페이스 지원,국제 화 지원.
Keycloak 은 Java,C\#,Python,Android,iOS,JavaScript,Nodejs 등 플랫폼 이나 언어 를 지원 하 며 간단 하고 사용 하기 쉬 운 Adapter 를 제공 하 며 소량의 설정 과 코드 만으로 SSO 를 실현 할 수 있 습 니 다.
키 클 락 의 새 발행 판 이름 은Quarkus으로 GraalVM 과 OpenJDK HotSpot 을 위 한 맞 춤 형 Kurbernetes Native Java 프레임 워 크 로 2019 년 말 정식 발 표 될 예정 이다.
설치 하 다.
Keycloak 은 WildFly application server 위 에 구축 되 어 있 으 며,홈 페이지 다운로드Standalone server distribution에서 압축 을 푼 후 bin/standalone.sh 를 실행 하면 시작 합 니 다.기본적으로 h2 데이터 베 이 스 를 사용 합 니 다.설정 을 수정 하여 다른 데이터 베 이 스 를 사용 할 수 있 습 니 다.Standalone Clustered Mode,Domain Clustered Mode 시작 모드 와 더 많은 설정 은 공식 문 서 를 참조 하 십시오.
기본적으로 로 컬 주 소 는http://localhost:8080/auth입 니 다.처음 로그 인 할 때 admin 사용 자 를 만들어 야 합 니 다.

관리자 콘 솔 에 직접 로그 인http://localhost:8080/auth/admin/:

Realm

서로 다른 응용 을 보호 하기 위해 보통 서로 다른 Realm 을 만 들 고 각 Realm 간 의 데이터 와 설정 은 독립 적 입 니 다.초기 에 만 든 Realm 은 Master 이 고 Master 는 최고 레벨 의 Realm 입 니 다.Master Realm 의 admin 사용자(admin 역할 을 부여 하 는 사용자)는 다른 realm 을 보고 관리 할 수 있 는 권한 을 가지 고 있 습 니 다.따라서 master realm 을 사용 하여 사용자 와 응용 을 관리 하 는 것 을 추천 하지 않 고 슈퍼 관리자 만 realm 을 만 들 고 관리 해 야 합 니 다.모든 realm 은 전용 관리 콘 솔 이 있 습 니 다.자신의 관리자 계 정 을 설정 할 수 있 습 니 다.예 를 들 어 다음 에 우리 가 만 든 heroes realm,콘 솔 사이트 주 소 는?http://localhost:8080/auth/admin/heroes/console 。Heroes realm 을 만 들 고 왼쪽 상단 드 롭 다운 메뉴 를 클릭 하 십시오-"Add realm:

Login Tab 에는 사용자 등록,사용자 이름 편집,비밀번호 잊 기,나 기억 하기,email 검증,email 로그 인,SSL 필요 등 여러 가지 설정 옵션 이 있 습 니 다.

그 중에서 Require SSL 은 세 가지 옵션 이 있 습 니 다.all requests,external requests,none,기본 값 은 external requests 이 고 생산 환경 에서 all requests 로 설정 해 야 합 니 다.
all requests 모든 요청 은 HTTPS 를 통 해 external requests localhost 와 개인 IP 를 방문 해 야 합 니 다.HTTPS 를 통 해 none 클 라 이언 트 를 방문 하지 않 아 도 됩 니 다.HTTPS 가 필요 없습니다.
Themes Tab 은 인터페이스 테 마 를 설정 하고 국제 화 를 사용 할 수 있 습 니 다.

Tokens Tab 에 서 는 token 서명 알고리즘,만 료 시간 등 을 설정 할 수 있 습 니 다.
Client
Client 는 realm 에서 신뢰 받 는 응용 프로그램 입 니 다.

realm 을 만 든 후 다음 client 를 자동 으로 생 성 합 니 다:
계 정 계 정 관리

Realm 설정 에서 User-Managed Access 를 사용 하면 자신의 리 소스 를 관리 할 수 있 습 니 다.
admin-cli brokerrealm-management 는 realm 관리 역할 을 미리 설 치 했 습 니 다.realm 관리 자 를 만 들 때 이 역할 들 을 할당 해 야 합 니 다.security-admin-console realm 관리 콘 솔
heroes client 를 만 들 고 clients 오른쪽 위 에 있 는 Create 를 누 르 십시오:

Client Protocol 은 기본 값 openid-connect 를 사용 합 니 다.Access Type 은 세 가지 옵션 이 있 습 니 다.confidential,public,bear-only,기본 값 Public 를 유지 합 니 다.confidential 은 client secret 가 필요 하지만 웹 응용 프로그램 에서 이 client 를 사용 합 니 다.secret 를 안전하게 전송 할 수 없습니다.Public client 를 사용 해 야 합 니 다.HTTPS 를 엄 격 히 사용 하면 안전 을 보장 할 수 있 습 니 다.Valid Redirect URIs 입력http://localhost:4200/*.
인증 절차:
  • Standard Flow 즉 OAuth 2.0 규범 중의 Authorization Code Flow 는 추천 하 는 인증 절차 로 안전성 이 높다.키 클 로 크 는 사용 자 를 검증 한 후 일회 성,임시 Authorization Code 를 추가 하여 브 라 우 저 로 재 설정 합 니 다.브 라 우 저 는 이 코드 로 키 클 로 크 와 token(idenity,access,refresh token)
  • 을 교환 합 니 다.
  • Implicit Flow key cloak 에서 사용 자 를 검증 한 후 idenity 와 access token
  • 으로 돌아 갑 니 다.
  • Direct Access Grants REST client 에서 token 을 가 져 오 는 방식 으로 HTTP Post 요청 을 사용 합 니 다.응답 결 과 는 access 와 refresh token
  • 을 포함 합 니 다.
    예제 호출,요청 주소:http://localhost:8080/auth/realms/heroes/protocol/openid-connect/token:
    Client Scope
    Client Scope 는 프로 토 콜 맵 관 계 를 정 의 했 습 니 다.key cloak 은 일부 Scope 를 미리 정 의 했 습 니 다.모든 client 는 자동 으로 계승 합 니 다.그러면 client 에서 mapper 를 중복 정의 하지 않 아 도 됩 니 다.Client Scope 는 default 과 optional 두 가지 로 나 뉘 는데 default scope 는 자동 으로 효력 이 발생 하고 optional scope 가 지정 한 사용 시 효력 이 발생 합 니 다.
    optional scope 를 사용 하려 면 scope 인 자 를 사용 해 야 합 니 다:
    해당 scope 를 사용 하거나 mapper 를 설정 해 야 client 의 token 이나 userinfo 에 해당 하 는 속성 을 표시 할 수 있 습 니 다.예 를 들 어 위의 그림 에서 우 리 는 phone scope 를 사 용 했 고 phone mapper 에서 phone number 를 정의 했다.
    사용자 속성 에서 phoneNumber 를 정의 하면 token 에 phone 이 표 시 됩 니 다.number,heroes client->Client Scopes->Evaluate 에서 효 과 를 볼 수 있 습 니 다.

    Role、Group、User
    Role
    Role 은 두 가지 등급 으로 나 뉜 다.Realm,Client,기본 Realm Role:offlineaccess、uma_authorization。
    offline access
    OpenID 규범 에서 오프라인 access 를 정의 합 니 다.사용자 로그 인 은 오프라인 token 을 얻 습 니 다.사용자 가 종료 한 후에 도 오프라인 token 을 사용 할 수 있 습 니 다.많은 장면 에서 매우 유용 하 다.예 를 들 어 매일 오프라인 으로 데 이 터 를 백업 하 는 것 이다.오프라인 토 큰 을 얻 으 려 면 오프라인access 캐릭터 외 에 오프라인 을 지정 해 야 합 니 다.access Scope。기본적으로 오프라인 token 은 기한 이 지나 지 않 지만 30 일 마다 갱신 해 야 합 니 다.오프라인 token 을 취소 할 수 있 습 니 다:
    uma_authorization
    uma 는 User-Managed Access 의 줄 임 말 이 며,Keycloak 은 UMA 2.0 기능 에 맞 는 인증 서버 입 니 다.
    Role,Group 과 User 의 관계
    User 는 하나 이상 의 Group 에 속 할 수 있 고 Role 은 User 와 Group 에 부여 할 수 있 습 니 다.
    Realm 관리 사용자 만 들 기
    사용자 추가:

    realm-management 권한 부여:
    Authentication
    키 클 락 은 브 라 우 저,Direct Grant,Registration,Reset Credentials 등 인증 절 차 를 미리 정의 하고 사용자 도 사용자 정의 할 수 있다.Brower 프로 세 스 를 예 로 들 면:

    Required 는 실행 해 야 합 니 다.Alternative 는 최소한 하 나 를 실행 해 야 합 니 다.Optional 은 사용자 가 사용 할 지 여 부 를 결정 합 니 다.
    ID 공급 자 ADFSSalesforce Spring BootAngular 참고 문서
    Keycloak A Quick Guide to Using Keycloak with Spring Boot AD FS Docs Spring Boot and OAuth2 OAuth 2.0 Login Sample Spring Boot and OAuth2 with Keycloak Spring SAML Springboot Oauth 2 서버 구축 Oauth 2 인증 서비스 How to Setup MS AD FS 3.0 as Brokered Identity Provider in Keycloak
    총결산
    위 에서 말씀 드 린 것 은 편집장 님 께 서 소개 해 주신 Spring Boot/Angular 가 Keycloak 을 통합 하여 단일 로그 인 기능 을 실현 하 는 것 입 니 다.여러분 께 도움 이 되 기 를 바 랍 니 다.궁금 한 점 이 있 으 시 면 메 시 지 를 남 겨 주세요.편집장 님 께 서 바로 답 해 드 리 겠 습 니 다.여기 서도 저희 사이트 에 대한 여러분 의 지지 에 감 사 드 립 니 다!
    만약 당신 이 본문 이 당신 에 게 도움 이 된다 고 생각한다 면,전 재 를 환영 합 니 다.번 거 로 우 시 겠 지만 출처 를 밝 혀 주 십시오.감사합니다!

    좋은 웹페이지 즐겨찾기