두 개의 서로 다른 리소스 및 범위에 대해 react-aad-msal을 사용하여 액세스 토큰 가져 오기

북유럽

액세스 토큰으로 두 개의 서로 다른 API를 호출해야하는 하나의 React 앱을 개발했습니다 . 애플리케이션의 코드는 react-aad-msal 라이브러리 를 인증하는 데 사용합니다 . 원래 응용 프로그램은 매력처럼 작동하는 필요한 액세스 토큰을 요청한 하나의 API 만 호출하도록 빌드되었습니다.

다음과 같은 권한 사용에 대한 Microsoft 설명서따라 :

액세스 토큰은 단일 리소스에만 사용할 수 있지만 액세스 토큰 내에 인코딩 된 것은 해당 리소스에 대해 앱에 부여 된 모든 권한입니다.

리소스가 다르기 때문에 두 개의 다른 액세스 토큰을 요청해야합니다 .

리소스와 범위가 하나 뿐인 작업 솔루션 :

<AzureAD>래퍼에 필요한 공급자 만들기 :

const config = {
   auth: {
      authority: process.env.REACT_APP_AUTH_AUTHORITY,
      clientId: process.env.REACT_APP_AUTH_CLIENT_ID,
      redirectUri: process.env.REACT_APP_AUTH_REDIRECT_URI
   },
   cache: {
      cacheLocation: 'localStorage',
      storeAuthStateInCookie: true
   }
};

const authenticationParameters = {
   scopes: ['https://<our-api-name>.azurewebsites.net/user_impersonation'],
};

// saved to AuthenticationService.provider - logic removed
new MsalAuthProvider(config, authenticationParameters, LoginType.Redirect);

그런 다음 <AzureAD>래퍼에 전달합니다 .

<AzureAD provider={AuthenticationService.provider}
         forceLogin={true}>

여기에 문제가 없습니다.

질문 :

따라서 다른 리소스와 범위에서 두 개의 액세스 토큰이 필요한 경우 시나리오를 어떻게 처리해야하는지 약간 혼란 스럽습니다.

범위 배열에 추가하려고하면 다른 리소스와 범위를 다음과 같이 배열합니다.

const authenticationParameters = {
    scopes: [
       'https://<our-app-name>.azurewebsites.net/user_impersonation',
       'https://<tenant-name>.onmicrosoft.com/<api-guid>/access_as_user'
    ],
};

분명히 다음과 같은 오류 메시지가 표시됩니다.

AADSTS28000 : 입력 매개 변수 범위에 제공된 값이 둘 이상의 자원을 포함하므로 유효하지 않습니다.

다음에 관심이 있습니다.

  1. 다른 API로 보내기 위해 다른 액세스 토큰을 올바르게 가져 오려면 어떻게해야합니까?
  2. 사용자가 로그인 페이지로 두 번 리디렉션되어야하지 않습니까?
  3. 어떻게 든 하나의 요청으로 상황을 처리 할 수 ​​있습니까?

모든 설명이나 아이디어에 감사드립니다. 감사합니다!

게리 아처

제쳐두고, API 수준이 2 개인 아키텍처가 선호되는 옵션이지만 당연히 당면한 문제의 범위를 벗어납니다.

  • 진입 점 API는 React 앱 및 유사한 소비자를 제공하는 데 중점을 둡니다. User Experience API라는 브랜드 일 수 있습니다.
  • 진입 점 API는 실제 작업을 수행하기 위해 핵심 서비스를 호출합니다. 제품, 사용자, 재고 API가 될 수 있습니다.

이 설정에서 각 UI는 단일 API 만 호출하면되며 여러 소스에서 데이터를 가져 오는 것과 관련된 OAuth 작업이 더 간단합니다.

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

Related 관련 기사

뜨겁다태그

보관