Dapatkan kode otorisasi

BERLAKU UNTUK: Semua tingkatAN API Management

get-authorization-context Gunakan kebijakan untuk mendapatkan konteks otorisasi koneksi tertentu (sebelumnya disebut otorisasi) ke penyedia kredensial yang dikonfigurasi dalam instans API Management.

Kebijakan mengambil dan menyimpan otorisasi dan menyegarkan token dari penyedia kredensial yang dikonfigurasi menggunakan koneksi.

Catatan

Tetapkan elemen kebijakan dan elemen turunan dalam urutan yang disediakan dalam pernyataan kebijakan. Pelajari lebih lanjut cara mengatur atau mengedit kebijakan API Management.

Pernyataan kebijakan

<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" />

Atribut

Atribut Deskripsi Wajib diisi Default
provider-id Pengidentifikasi sumber daya penyedia info masuk. Ekspresi kebijakan diizinkan. Ya T/A
authorization-id Pengidentifikasi sumber daya koneksi. Ekspresi kebijakan diizinkan. Ya T/A
context-variable-name Nama variabel konteks untuk menerima objek Authorization. Ekspresi kebijakan diizinkan. Ya T/A
identity-type Jenis identitas yang akan diperiksa terhadap kebijakan akses koneksi.
- managed: identitas terkelola yang ditetapkan sistem dari instans API Management.
- jwt: Token pembawa JWT yang ditentukan dalam atribut identity.

Ekspresi kebijakan diizinkan.
No managed
identitas Token pembawa Microsoft Entra JWT untuk memeriksa izin koneksi. Diabaikan untuk identity-type selain jwt.

Klaim yang diharapkan:
- audiens: https://azure-api.net/authorization-manager
- oid: ID objek izin
- tid: ID penyewa izin

Ekspresi kebijakan diizinkan.
No T/A
ignore-error Boolean. Jika memperoleh konteks otorisasi menghasilkan kesalahan (misalnya, sumber daya koneksi tidak ditemukan atau dalam status kesalahan):
- true: variabel konteks diberi nilai null.
- false: kembalikan 500

Jika Anda mengatur nilai ke false, dan konfigurasi kebijakan menyertakan on-error bagian, kesalahan tersedia di context.LastError properti .

Ekspresi kebijakan diizinkan.
No false

Obyek otorisasi

Variabel konteks otorisasi menerima objek jenis Authorization.

class Authorization
{
    public string AccessToken { get; }
    public IReadOnlyDictionary<string, object> Claims { get; }
}
Nama Properti Deskripsi
AccessToken Token akses pembawa untuk mengotorisasi permintaan backend.
Klaim Klaim yang dikembalikan dari API respons token server otorisasi (lihat RFC6749#section-5.1).

Penggunaan

Catatan penggunaan

  • Konfigurasikan identity-type=jwtsaat kebijakan akses untuk koneksi ditetapkan ke perwakilan layanan. Hanya /.default cakupan khusus aplikasi yang didukung untuk JWT.

Contoh

Dapatkan token kembali

<!-- 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>

Dapatkan token kembali dengan atribut yang diatur secara dinamis

<!-- 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>

Lampirkan token ke panggilan backend

<!-- 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>

Dapatkan token dari permintaan masuk dan kembalikan token

<!-- 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>

Untuk informasi selengkapnya tentang bekerja dengan kebijakan, lihat: