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

sangwoo0795님의 프로필 이미지

작성한 질문수

스프링 시큐리티 OAuth2

OAuth 2.0 Roles 이해

keycloack userinfo 403 forbidden error

23.01.04 16:07 작성

·

3K

1

https://www.inflearn.com/questions/693312/profile-email-%EA%B6%8C%ED%95%9C%ED%8E%98%EC%9D%B4%EC%A7%80%EA%B0%80-%EB%82%98%EC%98%A4%EC%A7%80-%EC%95%8A%EC%8A%B5%EB%8B%88%EB%8B%A4

 

해당 페이지에 있는 해결 방법 그대로

consent required를 킨 후에

access token을 받아오는 것 까지는 잘 되는데,

마찬가지로 userinfo 요청시

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

에 Authorization에 Bearer Token타입 체크 후

Token값도 받아온 access_token값으로 잘 넣어줬는데도

403 forbidden 에러가 뜨네요

무엇이 잘못된걸까요

keycloack버전은 20.0.2입니다

 

답변 3

16

미용쓰기님의 프로필 이미지

2023. 01. 13. 09:17

아래 해당 url 참고하여 해결 가능합니다.

https://keycloak.discourse.group/t/issue-on-userinfo-endpoint-at-keycloak-20/18461/7

 

  1. https://github.com/keycloak/keycloak/pull/14237MR 을 보시면 알수있듯이 keycloak 버전이 올라가면서 openid scope 를 누락시킨 경우 403 이 노출됩니다.

  2. keycloak > 왼쪽 탭 > Client scopes > Create client scope > 'openid' 이름으로 default type 생성

  3. keycloak > 왼쪽 탭 > Client > oauth2-client-app > Client scopes > Add client scope > 2번에서 생성한 openid default 값으로 추가

  4. code 발급부터 다시해보시면 됩니다.

박준혁님의 프로필 이미지

2023. 03. 15. 19:48

해당 답글로 해결 되었습니다.
감사합니다.

땃쥐님의 프로필 이미지

2023. 03. 23. 16:29

감사합니다!

Parkpro님의 프로필 이미지

2023. 04. 13. 11:25

해당 답변으로 깔끔하게 해결 완료 했습니다 ㅎ
감사합니다 !

system.out.println님의 프로필 이미지

2023. 05. 25. 18:34

덕분에 해결할 수 있었습니다!! 저는 왜 이거 하나 못 찾아서 헤매고 있었을까요..

https://www.keycloak.org/docs/latest/upgrading/index.html#userinfo-endpoint-changes

스택오버플로우나 다른 곳에서 질문이 등록되어 있었지만 잘못된 답변도 많아서 일단 keycloak 공식 문서를 찾아보자 ! 했습니다.

  • It is now required for access tokens to have the openid scope, which is stipulated by UserInfo being a feature specific to OpenID Connect and not OAuth 2.0. If the openid scope is missing from the token, the request will be denied with a 403 Forbidden (see above).

  • UserInfo now checks the user status, and returns the invalid_token response if the user is disabled.

이 글을 보고 openid 라는 걸 scope 에 추가를 해줘야 하는구나. 근데 scope 는 어디서 어떻게 추가를 해줘야하는거지..? 여기서 일단 정지.. 진짜 전 멍청한가 봅니다 ㅜ.ㅜ

Client scopes 에서 생성 후 default 로 추가하면 scope 에 매번 적을 필요없이 적용되는 것 같고,

postman 에서 scope = profile emaill openid 여기에 적어도 잘 작동하는 것 같습니다.

puzzler님의 프로필 이미지

2023. 10. 09. 18:03

감사합니다.

강사님과 다르게 최신 버전으로 다운 받겠다고 Keycloak 21.1.2 버전을 다운받고 사용하다보니 발생한 에러 였네요.

 

강사님과 동일하게 Keycloak 19.0.1 버전을 다운 받으실 분들은 아래의 주소로 들어가서 다운 받으시면 됩니다.

https://github.com/keycloak/keycloak/releases/tag/19.0.1

3

Crow님의 프로필 이미지

2023. 01. 25. 10:39

저도 Keycloak 20버전을 사용했었는대

19 버전까진 괜찬았던거 같지만 20+버전부터 발생하는 이유 같습니다.

저는 code를 발급 받을때 스코프에 openid를 추가해서 해결했습니다.

ex:&scope=profile email openid

 

 


https://keycloak.discourse.group/t/issue-on-userinfo-endpoint-at-keycloak-20/18461/8?u=oneso123456789

0

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

2023. 01. 06. 18:39

음...

userinfo 를 가지고 오는 것은 token 을 담아서 보내는 것 외에는 특별한 설정이 없는데요..

keycloak 버전을 19로 해서 한번 해서 해보시고 혹시 강의에서 설정한 것과 동일한지 체크 해 보십시오

그리고도 동일한 결과가 나온다면 테스트 한 정보를 공유해 주시면 제가 해 보도록 하겠습니다.