인프런 커뮤니티 질문&답변
loadUser 중 Missing attribute 'preferred_username' in attributes 에러 발생
작성
·
19
0


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 사용자 정보에서 특정 속성을 기대하지만 해당 속성이 포함되어 있지 않으면 발생합니다. 이런 현상은 주로 사용자 정보 엔드포인트로부터 기대하는 정보를 받지 못하거나, 서버 측 설정에 따라 반환된 정보가 다를 때 나타날 수 있습니다.
해결책을 시도해볼 수 있는 방법은 다음과 같습니다:
OAuth2 공급자 설정 확인: OAuth2 공급자의 사용자 정보 엔드포인트에 올바른 속성들이 반환되는지 확인해보세요. 필요한 경우, OAuth2 공급자의 설정을 수정하여 필요한 속성(
preferred_username)이 포함되도록 해야 합니다.Spring Security 설정 수정:
OAuth2UserService를 재정의하여 기본적으로 필요한 속성(preferred_username)이 없을 때의 대체 동작을 설정할 수 있습니다.User Attributes Mapping:
SimpleAuthorityMapper같은 매핑 설정이 올바르게 되어 있는지 확인하고, 필요 시 매핑 로직을 조정하세요.
자세한 내용은 Spring Security의 참고 문서에서 확인할 수 있습니다.
해당 문제 해결에 도움이 되길 바랍니다. 추가 질문이 있으면 언제든지 물어보세요!





