2017-09-21 2 views
1

react-native-auth0 sdk를 사용하고 있습니다. 다음은 페이스 북 로그인을 위해 auth0을 사용하는 방법입니다.긴 액세스 토큰 또는 새로 고침 토큰 중 하나만 가져올 수 있습니다.

auth0 
    .webAuth 
    .authorize({ 
     scope: 'openid profile email offline_access', 
     //audience: config.auth0.audience,  //option (1) 
     audience: auth0Domain+'/userinfo',  //option (2) 
     responseType: 'token id_token', 
    }) 
    .then(auth0Cred => { 
     console.log("Auth0 Auth Result: "+JSON.stringify(auth0Cred)); 
     dispatch(signInAuth0Successful(auth0Cred)); 
     if (callback != null) { 
      callback(auth0Cred); 
     } 

     dispatch(saveAuth0RefreshToken(auth0Cred.refreshToken)); 

     //return auth0Cred; 
    }) 
    .catch(error => console.log(error)); 

나를 위해 두 가지 옵션이 있습니다.

옵션 (1)을 사용하면 accessToken, idToken, scope, expiresIn, tokenType (긴 버전)이 표시됩니다.

옵션 (2)을 사용하면 accessToken, idToken, refreshToken, expiresIn, tokenType이 나에게 (불투명 한 버전) 제공됩니다.

그러나 긴 accessToken과 refreshToken이 동시에 필요합니까? 가능한가?

답변

1

설명 - 자신의 API에 audience을 사용하면 JWT 액세스 토큰 (긴 토큰)을 수신하도록 선택됩니다. Auth0 /userInfo 엔드 포인트를 호출하기 만하면 기본 동작은 불투명 한 액세스 토큰을 제공하는 것입니다. 이것은 다소 혼란 스럽지만 예상되는 동작입니다.

본인 만의 독자를 지정하지 않으면 JWT 액세스 토큰이 필요한 이유는 무엇입니까?

그러나 요청을 해결하려면 Auth0 대시 보드에서 클라이언트를 OIDC Conformant으로 설정했는지 확인하십시오. Clients -> Your Client -> Settings - Advanced 아래 (페이지 하단). 화면 아래 촬영 :

enter image description here

를이 우리가 다른 옵션을 탐색 할 수 있습니다 작동하지 않는 경우 - 필요한 경우 그래서 아래에 댓글을 남겨주세요.

OIDC 적합성을 사용하면 SPA (암시 적 플로우)에 대한 새로 고침 토큰을받지 못합니다. 대신 Silent Auth를 사용하십시오 (reference docs here 참조). 따라서 클라이언트 유형을 Native으로 설정하십시오.

OP 피드백에 따라 - 리소스 서버에도 allow_offline_access이 활성화되어 있는지 확인하십시오. 이것을 관리 API로 패치 할 수 있습니다. 또는 Auth0 대시 보드에서 API로 가서 API 설정 페이지에서 스위치를 토글하십시오.

enter image description here

+0

나는 편안하고 API를 제공하는 백엔드 서버가됩니다. 이 경우 청중에게 옵션 (1)을 사용해야합니까? 현재 백엔드에 localhost를 사용 중입니다. – ykn121

+0

OIDC 준수를 설정했지만 여전히 refreshToken을 얻을 수 없습니다. – ykn121

+0

클라이언트 측에서 액세스 토큰을 새로 고치는 방법은 무엇입니까? – ykn121