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

dohyun_lim님의 프로필 이미지
dohyun_lim

작성한 질문수

스프링 시큐리티 OAuth2

OAuth 2.0 Roles 이해

profile email 권한페이지가 나오지 않습니다.

작성

·

705

1

  1. authorization_code 를 얻어오는 요청 보냄

  2. login 페이지가 떠서 로그인함

  3. email ,profile 등 이걸 허락하겠는가? (저는 이게 안뜹니다.)

  4. 8081이 안떠있으니 에러페이지

  5. code를 복붙해서 access token 요청 -> accestoken 잘받아옴

  6. 해당 access token 으로 userinfo 요청시 403 forbidden

놓친 설정이 있나 확인을 여러번 하였는데 첫번째 강의에서는 Clients 설정에서 Authentication flow 에 implicit flow를 체크하셨는데 2번째 강의에는 해제 되어있길레 해제 해봤지만 결과는 동일합니다.

무엇이 문제인지 알 수 있을까요..?

 

jwt.io에서 토큰 정보를 확인했을떄 다음과 같습니다. 제가 안되길레 여러 RoleMapping을 추가해본것입니다.

{
  "exp": 1668576888,
  "iat": 1668576588,
  "auth_time": 1668576573,
  "jti": "6775c84b-9f26-4d8c-ab58-a09c136eb782",
  "iss": "http://localhost:8080/realms/oauth2",
  "aud": [
    "realm-management",
    "account"
  ],
  "sub": "f35e128a-f3a9-48df-a784-5675ade34468",
  "typ": "Bearer",
  "azp": "oauth2-client-app",
  "session_state": "4b46d62b-0dbe-41ba-9901-a2465eed5f41",
  "acr": "1",
  "realm_access": {
    "roles": [
      "offline_access",
      "uma_authorization",
      "default-roles-oauth2"
    ]
  },
  "resource_access": {
    "realm-management": {
      "roles": [
        "manage-users",
        "view-users",
        "query-groups",
        "query-users"
      ]
    },
    "account": {
      "roles": [
        "manage-account",
        "manage-account-links",
        "view-profile"
      ]
    }
  },
  "scope": "profile email",
  "sid": "4b46d62b-0dbe-41ba-9901-a2465eed5f41",
  "email_verified": false,
  "name": "kakarot lim",
  "preferred_username": "user",
  "given_name": "kakarot",
  "family_name": "lim",
  "email": "user@keycloak.com"
}

구글링 해서 알아본 결과 authorization_code를 요청할때 헤더에 scope=openid 로 하니 잘되었습니다.

 

이건 버전 차이라고 보면 될까요? 저는 도커로 20 버전을 사용하였습니다.

답변 1

2

dohyun_lim님의 프로필 이미지
dohyun_lim
질문자

자문자답)
clients Settings에서 Login Settings 에서 Consent required 를 켜면 user 가 로그인후 consent 하는 화면도 나오고 scope에 openid 없이해도 정상적으로 access token 을 받아오게 됩니다.

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

네 맞습니다.

consent 화면은 clientSettings 에서 사용유무를 설정해야 나오게 됩니다.

기본은 false 이기 때문에 나오지 않은 것 같습니다.

dohyun_lim님의 프로필 이미지
dohyun_lim

작성한 질문수

질문하기