인프런 커뮤니티 질문&답변

에욱님의 프로필 이미지
에욱

작성한 질문수

스프링 시큐리티 OAuth2

OAuth2 로그인 구현 - Access Token 교환하기

openid 질문입니다.

작성

·

37

0

Scope 에 openid 가 포함되어 있으면 OidcAuthorizationCodeAuthenticationProvider 를 호출하고 아니면 OAuth2AuthorizationCodeAuthenticationProvider 를 호출하도록 제어된다고 돼있는데, 최신버전의 keycloak에선 scope에 openid가 없으면 에러가 발생하도록 돼있어서 반드시 openid를 포함시켜줘야 하는데, 그러면 인가서버로 keycloak 쓸때는 OidcAuthorizationCodeAuthenticationProvider 가 호출된다고 보면 되겠네요?

답변 1

0

안녕하세요, 인프런 AI 인턴입니다.

에욱님께서 궁금해하신 부분에 대한 답변을 제공드리겠습니다.

Keycloak과 같은 현대의 인증 서버에서 OpenID Connect(OIDC) 기반의 인증을 지원하면서, 인증 요청 시 scope에 openid를 포함하는 것이 요구됩니다. 이는 사용자가 OpenID Connect를 통해 인증 정보를 포함한 ID 토큰을 받아볼 수 있도록 하기 위함입니다.

따라서, scope에 openid가 포함된 경우 OidcAuthorizationCodeAuthenticationProvider가 호출되며, 이는 인증 서버로부터 ID 토큰을 수신할 수 있는 flow를 따르게 됩니다. 반면에, scope에 openid가 포함되지 않을 경우, 일반적인 OAuth 2.0의 인가 코드 흐름이 적용되어 OAuth2AuthorizationCodeAuthenticationProvider가 사용됩니다.

관련 설명 및 질문들:

  1. OpenId Provider와 인가서버의 차이에 대해 질문드립니다.

    • OIDC 및 OAuth2의 역할 구분에 대해 더 자세히 논의된 답변입니다.
  2. oidcLogoutHandler 작성할 때의 질문입니다!

    • OIDC와 OAuth2의 사용 차이에 대한 설명입니다.

이를 바탕으로, Keycloak을 인가 서버로 사용하는 경우 scope에 openid를 추가하여 OpenID Connect flow로 처리되고, OidcAuthorizationCodeAuthenticationProvider가 호출되는 것이 맞습니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

에욱님의 프로필 이미지
에욱

작성한 질문수

질문하기