강의

멘토링

커뮤니티

Cộng đồng Hỏi & Đáp của Inflearn

Hình ảnh hồ sơ của dohyunlim
dohyunlim

câu hỏi đã được viết

Bảo mật mùa xuân OAuth2

Hiểu vai trò OAuth 2.0

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

Viết

·

832

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 버전을 사용하였습니다.

javaspringspring-bootoauth

Câu trả lời 1

2

dohyunlim님의 프로필 이미지
dohyunlim
Người đặt câu hỏi

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

leaven님의 프로필 이미지
leaven
Người chia sẻ kiến thức

네 맞습니다.

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

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

Hình ảnh hồ sơ của dohyunlim
dohyunlim

câu hỏi đã được viết

Đặt câu hỏi