Mengonfigurasi server otorisasi eksternal - NICEDCVManajer Sesi

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

Mengonfigurasi server otorisasi eksternal

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

Secara default, Session Manager menggunakan Broker sebagai server otorisasi untuk menghasilkan token akses OAuth 2.0 untuk SDK klien dan pernyataan 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, lihat Panduan Developer Amazon Cognito.

Menggunakan Amazon Cognito sebagai server otorisasi
  1. Membuat kolam pengguna Amazon Cognito. Untuk informasi selengkapnya tentang kolam pengguna, lihat Fitur Amazon Cognito di Panduan Developer Amazon Cognito.

    Gunakan create-user-poolperintah, dan tentukan nama pool dan Region untuk membuatnya.

    Dalam contoh ini, kita beri nama pooldcv-session-manager-client-app dan kita membuatnyaus-east-1.

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

    Contoh keluaran

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

    CatatuserPoolId, Anda akan membutuhkannya di langkah berikutnya.

  2. Buat domain baru untuk kolam pengguna Anda. Gunakan create-user-pool-domainperintah, dan tentukan nama domain dan kumpulan pengguna yang Anda buat di langkah sebelumnya.userPoolId

    Dalam contoh ini, nama domainmydomain-544fa30f-c0e5-4a02-8d2a-a3761EXAMPLE dan kita membuatnya dius-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 keluaran

    { "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 pool pengguna adalah sebagai berikut:https://domain_name.auth.region.amazoncognito.com. Dalam contoh ini, domain pool pengguna adalahhttps://mydomain-544fa30f-c0e5-4a02-8d2a-a3761EXAMPLE.auth.us-east-1.amazoncognito.com.

  3. Membuat klien kolam pengguna. Gunakan create-user-pool-clientperintah dan tentukan kumpulan pengguna yang Anda buat, nama untuk klien, dan Wilayah untuk membuatnya.userPoolId Juga, sertakan--generate-secret opsi untuk menentukan bahwa Anda ingin menghasilkan rahasia untuk klien kolam pengguna yang sedang dibuat.

    Dalam hal ini, nama kliendcv-session-manager-client-app dan kami membuatnya dius-east-1 Region.

    $ 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 keluaran

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

    CatatClientId danClientSecret. Anda harus memberikan informasi ini kepada pengembang ketika mereka meminta token akses untuk permintaan API.

  4. Buat server sumber daya OAuth2.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-serverperintah dan tentukan kumpulan pengguna, pengenal unik dan nama untuk server sumber daya, ruang lingkup, dan Wilayah tempat membuatnya.userPoolId

    Dalam contoh ini, kita gunakandcv-session-manager sebagai identifier dan nama, dan kita gunakansm_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 keluaran

    { "ResourceServer": { "UserPoolId": "us-east-1_QLEXAMPLE", "Identifier": "dcv-session-manager", "Name": "dcv-session-manager", "Scopes": [ { "ScopeName": "sm_scope", "ScopeDescription": "sm_scope" }] } }
  5. Memperbarui klien kolam pengguna.

    Gunakan perintah update-user-pool-client. TentukanuserPoolId kumpulan pengguna, klien kumpulan pengguna, dan Wilayah.ClientId Untuk--allowed-o-auth-flows, tentukanclient_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 pengidentifikasi server sumber daya dan nama lingkup sebagai berikut:resource_server_identifier/scope_name. Sertakan protokol OAuth saat berinteraksi dengan kolam pengguna Cognito.--allowed-o-auth-flows-user-pool-client

    $ 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 keluaran

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

    Pool pengguna sekarang siap untuk menyediakan dan mengotentikasi token akses. Dalam contoh ini, URL untuk server otorisasi adalahhttps://cognito-idp.us-east-1.amazonaws.com/us-east-1_QLEXAMPLE/.well-known/jwks.json.

  6. 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 keluaran

    { "access_token":"eyJraWQiOiJGQ0VaRFpJUUptT3NSaW41MmtqaDdEbTZYb0RnSTQ5b2VUT0cxUUI1Q2VJPSIsImFsZyI6IlJTMjU2In0.eyJzdWIiOiIybDkyNzNocDZrMnV0NWN1Z2c5dWg4ZGx0cCIsInRva2VuX3VzZSI6ImFjY2VzcyIsInNjb3BlIjoiZGN2LXNlc3Npb24tbWFuYWdlclwvcGVybWlzc2lvbnMiLCJhdXRoX3RpbWUiOjE2MDI1MTMyODMsImlzcyI6Imh0dHBzOlwvXC9jb2duaXRvLWlkcC51cy13ZXN0LTIuYW1hem9uYXdzLmNvbVwvdXMtd2VzdC0yX1FMZTA3SU9GViIsImV4cCI6MTYwMjUxNjg4MywiaWF0IjoxNjAyNTEzMjgzLCJ2ZXJzaW9uIjoyLCJqdGkiOiIyMDk2YTg4NS04YWQ0LTRmYjgtYjI2Mi1hMmNkNDk0OGZjNjYiLCJjbGllbnRfaWQiOiIybDkyNzNocDZrMnV0NWN1Z2c5dWg4ZGx0cCJ9.ZLZpS4CiiLq1X_VSm911hNT4g8A0FKZXScVJyyV0ijcyOfUOBcpgSMGqJagLYORFuYwLS5c7g4eO04wIwnw21ABGIDcOMElDPCJkrzjfLEPS_eyK3dNmlXDEvdS-Zkfi0HIDsd6audjTXKzHlZGScr6ROdZtId5dThkpEZiSx0YwiiWe9crAlqoazlDcCsUJHIXDtgKW64pSj3-uQQGg1Jv_tyVjhrA4JbD0k67WS2V9NW-uZ7t4zwwaUmOi3KzpBMi54fpVgPaewiVlUm_aS4LUFcWT6hVJjiZF7om7984qb2gOa14iZxpXPBJTZX_gtG9EtvnS9uW0QygTJRNgsw", "expires_in":3600, "token_type":"Bearer" }
  7. Daftarkan server otorisasi eksternal untuk digunakan dengan broker dengan menggunakanregister-auth-server 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, dan URL server yang dihasilkan di sini. Untuk informasi selengkapnya tentang meminta token akses, lihat Membuat token akses dan membuat permintaan API di Panduan Pengembang Manajer Sesi NICE DCV.