1

내가 개발 한 API를 등록하기 위해 Azure를 사용한 후 SCP 클레임에 관한 질문이 있습니다. 필자는 다양한 자습서와 샘플 응용 프로그램을 따랐습니다. 모든 것이 제대로 확인하고 나는 주로이 튜토리얼을 사용하여 신뢰할 수있는 서브 시스템에서 API 메서드를 호출 할 수있어 : https://github.com/AzureADSamples/WebApp-WebAPI-OAuth2-AppIdentity-DotNetAzure API 관리 - 범위 요청 NULL

나는 SCP 주장의 유효성을 검사 할 때 나는 데 문제가 있습니다 :

Claim scopeClaim = ClaimsPrincipal.Current.FindFirst("http://schemas.microsoft.com/identity/claims/scope"); 

scopeClaim 값은 항상 null입니다. ClaimsPrincipal 내의 클레임을 보았습니다. 현재 오브젝트가 있지만 범위는 아닙니다. 필자가 매니페스트를 다운로드하고 응용 프로그램 권한을 포함하여 업로드 한 경우 호출 응용 프로그램에 올바른 범위가 있는지 확인하기 위해 API 내에서 사용할 수 있습니다. 더 다양한 선택 클라이언트 웹 응용 프로그램을 장난과 API에 대해 여러 appPermissions을 만들고 수에 따라서 ...

"appPermissions": [ 
    { 
     "claimValue": "access.fullaccess", 
     "description": "Allow the application full access to the service on behalf of the signed-in user", 
     "directAccessGrantTypes": [], 
     "displayName": "Have full access to the service", 
     "impersonationAccessGrantTypes": [ 
     { 
      "impersonated": "User", 
      "impersonator": "Application" 
     } 
     ], 
     "isDisabled": false, 
     "origin": "Application", 
     "permissionId": "52966341-1bb5-4e9f-b4f6-46aad4d03b33", 
     "resourceScopeType": "Personal", 
     "userConsentDescription": "Allow the application full access to the service on your behalf", 
     "userConsentDisplayName": "Have full access to the service" 
    } 
    ] 

가 사전에 감사

: 다음은 내 응용 프로그램 매니페스트 (만 appPermissions)입니다 반환 된 JWT의 "범위"에는 범위 청구가 포함되지 않습니다. 내가 누락되었거나 제대로하지 못하는 것이 있습니까? 어떤 도움을 주시면 감사하겠습니다.

답변

1

JWT 토큰으로 되돌아 오는 클레임은 사용중인 OAuth 흐름과 사용자가 정의한 권한에 따라 다릅니다.

Azure AD를 사용하여 OAuth를 구현할 때 Azure AD에 등록 된 두 가지 응용 프로그램 (항상 하나의 API 공급자 및 하나 이상의 API 소비자)이 필요합니다. 구현중인 Flow에 따라 사용자도 함께해야합니다.

가장 간단한 경우를 먼저 선택해 보겠습니다. 클라이언트 자격 증명 플로. CC 플로우에는 관련 사용자가 없으며 중요한 유일한 권한은 응용 프로그램 권한뿐입니다. 자, 이건 좀 까다 롭습니다. 그것들은 scp 클레임과 같은 JWT 토큰에 반영되지 않고 소비자 응용 프로그램의 appRoles (documentation 참조)을 포함하는 roles입니다. 이러한 "App Roles"는 API 제공 응용 프로그램의 매니페스트에 appPermissions처럼 정의해야합니다.

인증 코드 부여 또는 리소스 소유자 비밀번호 부여와 같이 사용자가 포함 된 흐름을 사용하는 경우에만 AD 인터페이스를 사용하여 해당 권한을 정의한 경우 토큰에 scp 클레임이 표시됩니다.

희망이 있습니다.

+0

Logic 앱이 API를 사용하는 경우 가능합니다. 현재 우리가 읽은 모든 문서는 도움이되지 못했습니다. – M0rty