

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

# Mengkonfigurasi server otorisasi eksternal
<a name="ext-auth"></a>

Server otorisasi adalah server yang bertanggung jawab untuk mengautentikasi dan mengotorisasi klien SDKs dan Agen.

Secara default, Session Manager menggunakan Broker sebagai server otorisasi untuk menghasilkan token akses OAuth 2.0 untuk pernyataan klien SDKs dan perangkat lunak untuk Agen. Jika Anda menggunakan Broker sebagai server otorisasi, tidak diperlukan konfigurasi tambahan.

Anda dapat mengonfigurasi Pengelola Sesi untuk menggunakan Amazon Cognito sebagai server otorisasi eksternal, bukan Broker. Untuk informasi selengkapnya, tentang Amazon Cognito, lihat Panduan Pengembang [Amazon Cognito](https://docs.aws.amazon.com/cognito/latest/developerguide/what-is-amazon-cognito.html).

**Untuk menggunakan Amazon Cognito sebagai server otorisasi**

1. Buat kumpulan pengguna Amazon Cognito baru. Untuk informasi selengkapnya tentang kumpulan pengguna, lihat [Fitur Amazon Cognito](https://docs.aws.amazon.com/cognito/latest/developerguide/what-is-amazon-cognito.html#feature-overview) di Panduan Pengembang *Amazon Cognito*.

   Gunakan [create-user-pool](https://docs.aws.amazon.com/cli/latest/reference/cognito-idp/create-user-pool.html)perintah, dan tentukan nama pool dan Region untuk membuatnya.

   Dalam contoh ini, kami memberi nama kolam `dcv-session-manager-client-app` dan kami membuatnya`us-east-1`.

   ```
   $ aws cognito-idp create-user-pool --pool-name dcv-session-manager-client-app --region us-east-1
   ```

   Contoh Output

   ```
   {
       "UserPoolClient": {
           "UserPoolId": "us-east-1_QLEXAMPLE",
           "ClientName": "dcv-session-manager-client-app",
           "ClientId": "15hhd8jij74hf32f24uEXAMPLE",
           "LastModifiedDate": 1602510048.054,
           "CreationDate": 1602510048.054,
           "RefreshTokenValidity": 30,
           "AllowedOAuthFlowsUserPoolClient": false
       }
   }
   ```

   Catat`userPoolId`, Anda akan membutuhkannya di langkah berikutnya.

1. Buat domain baru untuk kumpulan pengguna Anda. Gunakan [create-user-pool-domain](https://docs.aws.amazon.com/cli/latest/reference/cognito-idp/create-user-pool-domain.html)perintah, dan tentukan nama domain dan kumpulan pengguna yang Anda buat pada langkah sebelumnya. `userPoolId`

   Dalam contoh ini, nama domain adalah `mydomain-544fa30f-c0e5-4a02-8d2a-a3761EXAMPLE` dan kami membuatnya di`us-east-1`.

   ```
   $ aws cognito-idp create-user-pool-domain --domain mydomain-544fa30f-c0e5-4a02-8d2a-a3761EXAMPLE --user-pool-id us-east-1_QLEXAMPLE --region us-east-1
   ```

   Contoh Output

   ```
   {
       "DomainDescription": {
           "UserPoolId": "us-east-1_QLEXAMPLE",
           "AWSAccountId": "123456789012",
           "Domain": "mydomain-544fa30f-c0e5-4a02-8d2a-a3761EXAMPLE",
           "S3Bucket": "aws-cognito-prod-pdx-assets",
           "CloudFrontDistribution": "dpp0gtexample.cloudfront.net",
           "Version": "20201012133715",
           "Status": "ACTIVE",
           "CustomDomainConfig": {}
       }
   }
   ```

   Format domain kumpulan pengguna adalah sebagai berikut:`https://domain_name.auth.region.amazoncognito.com`. Dalam contoh ini, domain pool pengguna adalah`https://mydomain-544fa30f-c0e5-4a02-8d2a-a3761EXAMPLE.auth.us-east-1.amazoncognito.com`.

1. Membuat klien kolam pengguna. Gunakan [create-user-pool-client](https://docs.aws.amazon.com/cli/latest/reference/cognito-idp/create-user-pool-client.html)perintah dan tentukan `userPoolId` kumpulan pengguna yang Anda buat, nama untuk klien, dan Wilayah tempat membuatnya. Juga, sertakan `--generate-secret` opsi untuk menentukan bahwa Anda ingin menghasilkan rahasia untuk klien kumpulan pengguna yang sedang dibuat.

   Dalam hal ini, nama klien adalah `dcv-session-manager-client-app` dan kami membuatnya di `us-east-1` Wilayah.

   ```
   $ aws cognito-idp create-user-pool-client --user-pool-id us-east-1_QLEXAMPLE --client-name dcv-session-manager-client-app --generate-secret --region us-east-1
   ```

   Contoh Output

   ```
   {
       "UserPoolClient": {
           "UserPoolId": "us-east-1_QLEXAMPLE",
           "ClientName": "dcv-session-manager-client-app",
           "ClientId": "2l9273hp6k2ut5cugg9EXAMPLE",
           "ClientSecret": "1vp5e8nec7cbf4m9me55mbmht91u61hlh0a78rq1qki1lEXAMPLE",
           "LastModifiedDate": 1602510291.498,
           "CreationDate": 1602510291.498,
           "RefreshTokenValidity": 30,
           "AllowedOAuthFlowsUserPoolClient": false
       }
   }
   ```
**catatan**  
Buat catatan tentang `ClientId` dan`ClientSecret`. Anda harus memberikan informasi ini kepada pengembang ketika mereka meminta token akses untuk permintaan API.

1. Buat server sumber OAuth2 daya.0 baru untuk kumpulan pengguna. Sebuah server sumber daya adalah server untuk sumber daya yang dilindungi akses. Ini menangani permintaan otentikasi untuk token akses. 

   Gunakan [create-resource-server](https://docs.aws.amazon.com/cli/latest/reference/cognito-idp/create-resource-server.html)perintah dan tentukan kumpulan pengguna, pengenal unik dan nama untuk server sumber daya, ruang lingkup, dan Wilayah tempat membuatnya. `userPoolId`

   Dalam contoh ini, kita gunakan `dcv-session-manager` sebagai pengenal dan nama, dan kita gunakan `sm_scope` sebagai nama lingkup dan deskripsi.

   ```
   $ aws cognito-idp create-resource-server --user-pool-id us-east-1_QLEXAMPLE --identifier dcv-session-manager --name dcv-session-manager --scopes ScopeName=sm_scope,ScopeDescription=sm_scope --region us-east-1
   ```

   Contoh Output

   ```
   {
       "ResourceServer": {
           "UserPoolId": "us-east-1_QLEXAMPLE",
           "Identifier": "dcv-session-manager",
           "Name": "dcv-session-manager",
           "Scopes": [
           {
               "ScopeName": "sm_scope",
               "ScopeDescription": "sm_scope"
           }]
       }
   }
   ```

1. Perbarui klien kumpulan pengguna. 

   Gunakan perintah [update-user-pool-client](https://docs.aws.amazon.com/cli/latest/reference/cognito-idp/update-user-pool-client.html). Tentukan `userPoolId` kumpulan pengguna, klien kumpulan pengguna, dan Wilayah. `ClientId` Untuk`--allowed-o-auth-flows`, tentukan `client_credentials` untuk menunjukkan bahwa klien harus mendapatkan token akses dari titik akhir token dengan menggunakan kombinasi ID klien dan rahasia klien. Untuk`--allowed-o-auth-scopes`, tentukan pengenal server sumber daya dan nama lingkup sebagai berikut:`resource_server_identifier/scope_name`. Sertakan `--allowed-o-auth-flows-user-pool-client` untuk menunjukkan bahwa klien diizinkan untuk mengikuti OAuth protokol saat berinteraksi dengan kumpulan pengguna Cognito.

   ```
   $ aws cognito-idp update-user-pool-client --user-pool-id us-east-1_QLEXAMPLE --client-id 2l9273hp6k2ut5cugg9EXAMPLE --allowed-o-auth-flows client_credentials --allowed-o-auth-scopes dcv-session-manager/sm_scope --allowed-o-auth-flows-user-pool-client --region us-east-1
   ```

   Contoh Output

   ```
   {
       "UserPoolClient": {
           "UserPoolId": "us-east-1_QLEXAMPLE",
           "ClientName": "dcv-session-manager-client-app",
           "ClientId": "2l9273hp6k2ut5cugg9EXAMPLE",
           "ClientSecret": "1vp5e8nec7cbf4m9me55mbmht91u61hlh0a78rq1qki1lEXAMPLE",
           "LastModifiedDate": 1602512103.099,
           "CreationDate": 1602510291.498,
           "RefreshTokenValidity": 30,
           "AllowedOAuthFlows": [
               "client_credentials"
           ],
           "AllowedOAuthScopes": [
               "dcv-session-manager/sm_scope"
           ],
           "AllowedOAuthFlowsUserPoolClient": true
       }
   }
   ```
**catatan**  
Kumpulan pengguna sekarang siap untuk menyediakan dan mengautentikasi token akses. Dalam contoh ini, URL untuk server otorisasi adalah`https://cognito-idp.us-east-1.amazonaws.com/us-east-1_QLEXAMPLE/.well-known/jwks.json`.

1. Uji konfigurasi.

   ```
   $ curl -H "Authorization: Basic `echo -n 2l9273hp6k2ut5cugg9EXAMPLE:1vp5e8nec7cbf4m9me55mbmht91u61hlh0a78rq1qki1lEXAMPLE | base64`" -H "Content-Type: application/x-www-form-urlencoded" -X POST "https://mydomain-544fa30f-c0e5-4a02-8d2a-a3761EXAMPLE.auth.us-east-1.amazoncognito.com/oauth2/token?grant_type=client_credentials&scope=dcv-session-manager/sm_scope"
   ```

   Contoh Output

   ```
   {
   "access_token":"eyJraWQiOiJGQ0VaRFpJUUptT3NSaW41MmtqaDdEbTZYb0RnSTQ5b2VUT0cxUUI1Q2VJPSIsImFsZyI6IlJTMjU2In0.eyJzdWIiOiIybDkyNzNocDZrMnV0NWN1Z2c5dWg4ZGx0cCIsInRva2VuX3VzZSI6ImFjY2VzcyIsInNjb3BlIjoiZGN2LXNlc3Npb24tbWFuYWdlclwvcGVybWlzc2lvbnMiLCJhdXRoX3RpbWUiOjE2MDI1MTMyODMsImlzcyI6Imh0dHBzOlwvXC9jb2duaXRvLWlkcC51cy13ZXN0LTIuYW1hem9uYXdzLmNvbVwvdXMtd2VzdC0yX1FMZTA3SU9GViIsImV4cCI6MTYwMjUxNjg4MywiaWF0IjoxNjAyNTEzMjgzLCJ2ZXJzaW9uIjoyLCJqdGkiOiIyMDk2YTg4NS04YWQ0LTRmYjgtYjI2Mi1hMmNkNDk0OGZjNjYiLCJjbGllbnRfaWQiOiIybDkyNzNocDZrMnV0NWN1Z2c5dWg4ZGx0cCJ9.ZLZpS4CiiLq1X_VSm911hNT4g8A0FKZXScVJyyV0ijcyOfUOBcpgSMGqJagLYORFuYwLS5c7g4eO04wIwnw21ABGIDcOMElDPCJkrzjfLEPS_eyK3dNmlXDEvdS-Zkfi0HIDsd6audjTXKzHlZGScr6ROdZtId5dThkpEZiSx0YwiiWe9crAlqoazlDcCsUJHIXDtgKW64pSj3-uQQGg1Jv_tyVjhrA4JbD0k67WS2V9NW-uZ7t4zwwaUmOi3KzpBMi54fpVgPaewiVlUm_aS4LUFcWT6hVJjiZF7om7984qb2gOa14iZxpXPBJTZX_gtG9EtvnS9uW0QygTJRNgsw",
   "expires_in":3600,
   "token_type":"Bearer"
   }
   ```

1. Daftarkan server otorisasi eksternal untuk digunakan dengan broker dengan menggunakan [register-auth-server](register-auth-server.md) perintah.

   ```
   $ sudo -u root dcv-session-manager-broker register-auth-server --url  https://cognito-idp.us-east-1.amazonaws.com/us-east-1_QLEXAMPLE/.well-known/jwks.json
   ```

Pengembang sekarang dapat menggunakan server untuk meminta token akses. Saat meminta token akses, berikan ID klien, rahasia klien, dan URL server yang dihasilkan di sini. Untuk informasi selengkapnya tentang meminta token akses, lihat [Membuat token akses dan membuat permintaan API](https://docs.aws.amazon.com/dcv/latest/sm-dev/request.html) di Panduan *Pengembang Manajer Sesi Amazon DCV*.