권한 부여 컨텍스트 가져오기
적용 대상: 모든 API Management 계층
get-authorization-context
정책을 사용하여 API Management 인스턴스에 구성된 자격 증명 공급자에 대해 지정된 연결(이전의 권한 부여)의 권한 부여 컨텍스트를 가져옵니다.
정책은 연결을 사용하여 구성된 권한 부여 공급자로부터 권한 부여 및 새로 고침 토큰을 가져오고 저장합니다.
참고 항목
정책 문에 제공된 순서대로 정책의 요소 및 자식 요소를 설정합니다. API Management 정책을 설정하거나 편집하는 방법에 대해 자세히 알아봅니다.
정책 문
<get-authorization-context
provider-id="credential provider id"
authorization-id="connection id"
context-variable-name="variable name"
identity-type="managed | jwt"
identity="JWT bearer token"
ignore-error="true | false" />
특성
특성 | 설명 | 필수 항목 | 기본값 |
---|---|---|---|
provider-id | 자격 증명 공급자 리소스 식별자 정책 식이 허용됩니다. | 예 | 해당 없음 |
authorization-id | 연결 리소스 식별자 정책 식이 허용됩니다. | 예 | 해당 없음 |
context-variable-name | Authorization 개체를 받을 컨텍스트 변수의 이름입니다. 정책 식이 허용됩니다. |
예 | 해당 없음 |
identity-type | 연결의 액세스 정책에 대해 확인할 ID 유형 - managed : API Management 인스턴스의 시스템 할당 관리 ID입니다. - jwt : identity 특성에 지정된 JWT 전달자 토큰입니다.정책 식이 허용됩니다. |
아니요 | managed |
identity | 연결 권한을 확인할 Microsoft Entra JWT 전달자 토큰입니다. jwt 이외의 identity-type 에 대해서는 무시됩니다. 예상 클레임: - 대상 그룹: https://azure-api.net/authorization-manager - oid : 권한 개체 ID - tid : 권한 테넌트 ID정책 식이 허용됩니다. |
아니요 | 해당 없음 |
ignore-error | 부울입니다. 권한 부여 컨텍스트를 획득하면 오류가 발생합니다(예: 연결 리소스를 찾을 수 없거나 오류 상태임). - true : 컨텍스트 변수에 null 값이 할당됩니다. - false : 500 반환값을 false 로 설정하고 정책 구성에 on-error 섹션이 포함된 경우 context.LastError 속성에서 해당 오류를 사용할 수 있습니다.정책 식이 허용됩니다. |
아니요 | false |
권한 부여 개체
권한 부여 컨텍스트 변수는 형식 Authorization
의 개체를 받습니다.
class Authorization
{
public string AccessToken { get; }
public IReadOnlyDictionary<string, object> Claims { get; }
}
속성 이름 | 설명 |
---|---|
AccessToken | 백 엔드 HTTP 요청에 권한을 부여하는 전달자 액세스 토큰입니다. |
클레임 | 권한 부여 서버의 토큰 응답 API에서 반환된 클레임(RFC6749#section-5.1 참조). |
사용
사용법 참고 사항
- 연결에 대한 액세스 정책이 서비스 주체에 할당되면
identity-type=jwt
를 구성합니다. JWT에는/.default
앱 전용 범위만 지원됩니다.
예제
토큰 다시 가져오기
<!-- Add to inbound policy. -->
<get-authorization-context
provider-id="github-01"
authorization-id="auth-01"
context-variable-name="auth-context"
identity-type="managed"
ignore-error="false" />
<!-- Return the token -->
<return-response>
<set-status code="200" />
<set-body template="none">@(((Authorization)context.Variables.GetValueOrDefault("auth-context"))?.AccessToken)</set-body>
</return-response>
동적으로 설정된 특성으로 토큰 다시 가져오기
<!-- Add to inbound policy. -->
<get-authorization-context
provider-id="@(context.Request.Url.Query.GetValueOrDefault("authorizationProviderId"))"
authorization-id="@(context.Request.Url.Query.GetValueOrDefault("authorizationId"))" context-variable-name="auth-context"
ignore-error="false"
identity-type="managed" />
<!-- Return the token -->
<return-response>
<set-status code="200" />
<set-body template="none">@(((Authorization)context.Variables.GetValueOrDefault("auth-context"))?.AccessToken)</set-body>
</return-response>
백 엔드 호출에 토큰 연결
<!-- Add to inbound policy. -->
<get-authorization-context
provider-id="github-01"
authorization-id="auth-01"
context-variable-name="auth-context"
identity-type="managed"
ignore-error="false" />
<!-- Attach the token to the backend call -->
<set-header name="Authorization" exists-action="override">
<value>@("Bearer " + ((Authorization)context.Variables.GetValueOrDefault("auth-context"))?.AccessToken)</value>
</set-header>
들어오는 요청에서 토큰 가져오기 및 토큰 반환
<!-- Add to inbound policy. -->
<get-authorization-context
provider-id="github-01"
authorization-id="auth-01"
context-variable-name="auth-context"
identity-type="jwt"
identity="@(context.Request.Headers["Authorization"][0].Replace("Bearer ", ""))"
ignore-error="false" />
<!-- Return the token -->
<return-response>
<set-status code="200" />
<set-body template="none">@(((Authorization)context.Variables.GetValueOrDefault("auth-context"))?.AccessToken)</set-body>
</return-response>
관련 정책
관련 콘텐츠
정책 작업에 대한 자세한 내용은 다음을 참조하세요.
- 자습서: API 변환 및 보호
- 정책 문 및 해당 설정에 대한 전체 목록에 대한 정책 참조
- 정책 식
- 정책 설정 또는 편집
- 정책 구성 재사용
- 정책 코드 조각 리포지토리
- Azure의 Microsoft Copilot을 사용하는 작성자 정책