Redhat에서 개발한 인증 & 인가 오픈소스 솔루션이며, 컨테이너 이미지, standalone, spring boot 내장 library 등 다양한 형태로 사용 가능한 장점을 가짐.
SSO
소셜 로그인
2차 인증(Two factor authentication - ex. Google OTP)
LDAP 기반 User Federation
OAuth Provider 역할 (Identity Provider)
Shiro 는 세션 기반의 인증 방식을 주로 사용함.
Keycloak 은 OpenID Connect 프로토콜을 사용하여, Client Application 에 대한 access token 과 id token 을 발급할 수 있으며
여러 microservice 들에 대한 인증 & 인가를 하나로 통합할 수 있음
SSO(Single Sign On)
1번의 로그인으로 여러 Application 에 접속할 때, 별도의 로그인 과정 없이 자동으로 인증 가능.
OAuth
위임 권한 프로토콜이며, 사용자가 별도의 password 입력 없이 타 서비스의 데이터에 접근 가능하도록 한다.
주로, 인증보다는 3rd Application 의 API 사용을 위한 인가 메인 목적
가장 오래된 인증 & 인가 프로토콜
웹 사이트에는 적합하지만, 모바일 어플리케이션은 적합하지 않음. (why? saml 은 xml 을 사용하여 response length 가 상당하다고 알려져있음)
OAuth 2.0 은 3rd Patry API 사용 인가가 메인 목적
OpenId Connect 는 통합인증, SSO 가 목적
OpenId Connect 는 인증 이 메인이며, OIDC 는 access token 뿐만 아니라, id token(jwt 형태, 누가 인증하고 해당 사람의 정보, 발행자가 누구인지...) 까지 사용
https://www.samsungsds.com/kr/insights/oidc.html
https://velog.io/@jakeseo_me/Oauth-2.0%EA%B3%BC-OpenID-Connect-%ED%94%84%EB%A1%9C%ED%86%A0%EC%BD%9C-%EC%A0%95%EB%A6%AC
https://tech.socarcorp.kr/security/2019/07/31/keycloak-sso.html
https://subji.github.io/posts/2020/07/08/keycloak1
https://www.keycloak.org/docs/latest/securing_apps/index.html
https://sowells.tistory.com/182
https://www.slideshare.net/AbhishekKoserwal1/building-secure-applications-with-keycloak
https://www.baeldung.com/spring-boot-keycloak
http://infosec.pusan.ac.kr/wp-content/uploads/2018/10/7.-SSO-ID-federation-%EA%B8%B0%EC%88%A0-at-IoT-platform_ver3.pdf