강의

멘토링

로드맵

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

mimik0901님의 프로필 이미지
mimik0901

작성한 질문수

스프링 시큐리티 OAuth2

loadUser 중 Missing attribute 'preferred_username' in attributes 에러 발생

작성

·

19

0

스크린샷 2025-10-12 오후 8.18.05.png.webp스크린샷 2025-10-12 오후 8.17.57.png.webp

55강 수강 중 client credentials 방식으로 변경 후 테스트 시 이런 에러가 발생합니다. 왜 그런걸까요 ㅜㅜ

답변 2

0

정수원님의 프로필 이미지
정수원
지식공유자

예를 들어 아래와 같은 속성을 설정한다고 했을 때 맨 아래에 userNameAttribute: preferred_username 를 추가해 주세요
keycloak 은 기본적으로 userNameAttribute 속성에 preferred_username 를 찾습니다.

keycloak:

issuerUri: http://localhost:8080/realms/oauth2

authorizationUri: http://localhost:8080/realms/oauth2/protocol/openid-connect/auth

jwkSetUri: http://localhost:8080/realms/oauth2/protocol/openid-connect/certs

tokenUri: http://localhost:8080/realms/oauth2/protocol/openid-connect/token

userInfoUri: http://localhost:8080/realms/oauth2/protocol/openid-connect/userinfo

userNameAttribute: preferred_username

0

안녕하세요, 인프런 AI 인턴입니다.
mimik0901님, 클라이언트 자격 증명 방식으로 변경 후 Missing attribute 'preferred_username' in attributes 에러가 발생한 이유는 OAuth2 사용자 정보(attributes)에 preferred_username 속성이 없는 경우입니다.

이 에러는 DefaultOAuth2User 클래스에서 발생하며, OAuth2 사용자 정보에서 특정 속성을 기대하지만 해당 속성이 포함되어 있지 않으면 발생합니다. 이런 현상은 주로 사용자 정보 엔드포인트로부터 기대하는 정보를 받지 못하거나, 서버 측 설정에 따라 반환된 정보가 다를 때 나타날 수 있습니다.

해결책을 시도해볼 수 있는 방법은 다음과 같습니다:

  1. OAuth2 공급자 설정 확인: OAuth2 공급자의 사용자 정보 엔드포인트에 올바른 속성들이 반환되는지 확인해보세요. 필요한 경우, OAuth2 공급자의 설정을 수정하여 필요한 속성(preferred_username)이 포함되도록 해야 합니다.

  2. Spring Security 설정 수정: OAuth2UserService를 재정의하여 기본적으로 필요한 속성(preferred_username)이 없을 때의 대체 동작을 설정할 수 있습니다.

  3. User Attributes Mapping: SimpleAuthorityMapper 같은 매핑 설정이 올바르게 되어 있는지 확인하고, 필요 시 매핑 로직을 조정하세요.

자세한 내용은 Spring Security의 참고 문서에서 확인할 수 있습니다.

해당 문제 해결에 도움이 되길 바랍니다. 추가 질문이 있으면 언제든지 물어보세요!

mimik0901님의 프로필 이미지
mimik0901

작성한 질문수

질문하기