

 AWS SDK untuk JavaScript V2 telah mencapai end-of-support. Kami menyarankan Anda bermigrasi ke [AWS SDK untuk JavaScript v3](https://docs.aws.amazon.com//sdk-for-javascript/v3/developer-guide/). Untuk detail dan informasi tambahan tentang cara bermigrasi, silakan lihat [pengumuman](https://aws.amazon.com/blogs//developer/announcing-end-of-support-for-aws-sdk-for-javascript-v2/) ini.

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

# Mengatur Kredensial
<a name="setting-credentials"></a>

AWS menggunakan kredensi untuk mengidentifikasi siapa yang memanggil layanan dan apakah akses ke sumber daya yang diminta diizinkan. 

Baik berjalan di browser web atau di server Node.js, JavaScript kode Anda harus mendapatkan kredensi yang valid sebelum dapat mengakses layanan melalui API. Kredensial dapat diatur secara global pada objek konfigurasi, menggunakan`AWS.Config`, atau per layanan, dengan meneruskan kredensi langsung ke objek layanan.

Ada beberapa cara untuk mengatur kredensil yang berbeda antara Node.js dan JavaScript di browser web. Topik di bagian ini menjelaskan cara mengatur kredensional di Node.js atau browser web. Dalam setiap kasus, opsi disajikan dalam urutan yang disarankan.

## Praktik Terbaik untuk Kredensial
<a name="credentials-best-practices"></a>

Menetapkan kredensil dengan benar memastikan bahwa aplikasi atau skrip browser Anda dapat mengakses layanan dan sumber daya yang diperlukan sambil meminimalkan paparan terhadap masalah keamanan yang dapat memengaruhi aplikasi penting misi atau membahayakan data sensitif.

Prinsip penting untuk diterapkan saat menetapkan kredensional adalah selalu memberikan hak istimewa paling sedikit yang diperlukan untuk tugas Anda. Lebih aman untuk memberikan izin minimal pada sumber daya Anda dan menambahkan izin lebih lanjut sesuai kebutuhan, daripada memberikan izin yang melebihi hak istimewa paling sedikit dan, sebagai hasilnya, diminta untuk memperbaiki masalah keamanan yang mungkin Anda temukan nanti. Misalnya, kecuali Anda perlu membaca dan menulis sumber daya individual, seperti objek di bucket Amazon S3 atau tabel DynamoDB, setel izin tersebut hanya untuk dibaca.

Untuk informasi selengkapnya tentang pemberian hak istimewa paling sedikit, lihat bagian [Hibah Hak Istimewa Paling](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html#grant-least-privilege) Sedikit dari topik Praktik Terbaik di Panduan Pengguna *IAM*.

**Awas**  
Meskipun dimungkinkan untuk melakukannya, kami menyarankan Anda untuk tidak menggunakan kredensi kode keras di dalam aplikasi atau skrip browser. Kredensi hard coding menimbulkan risiko mengekspos informasi sensitif.

Untuk informasi selengkapnya tentang cara mengelola kunci akses, lihat [Praktik Terbaik untuk Mengelola Kunci AWS Akses](https://docs.aws.amazon.com/general/latest/gr/aws-access-keys-best-practices.html) di Referensi Umum AWS.

**Topics**
+ [Praktik Terbaik untuk Kredensial](#credentials-best-practices)
+ [Mengatur Kredensial di Node.js](setting-credentials-node.md)
+ [Menyetel Kredensial di Browser Web](setting-credentials-browser.md)

# Mengatur Kredensial di Node.js
<a name="setting-credentials-node"></a>

Ada beberapa cara di Node.js untuk memasok kredensialmu ke SDK. Beberapa di antaranya lebih aman dan yang lain memberikan kenyamanan yang lebih besar saat mengembangkan aplikasi. Saat mendapatkan kredensi di Node.js, berhati-hatilah untuk mengandalkan lebih dari satu sumber seperti variabel lingkungan dan file JSON yang Anda muat. Anda dapat mengubah izin di mana kode Anda berjalan tanpa menyadari perubahan telah terjadi.

Berikut adalah cara-cara Anda dapat memberikan kredensi Anda dalam urutan rekomendasi:

1. Dimuat dari peran AWS Identity and Access Management (IAM) untuk Amazon EC2

1. Dimuat dari file kredensial bersama () `~/.aws/credentials`

1. Dimuat dari variabel lingkungan

1. Dimuat dari file JSON pada disk

1. Kelas penyedia kredensial-lainnya yang disediakan oleh SDK JavaScript 

Jika lebih dari satu sumber kredensi tersedia untuk SDK, prioritas default pemilihan adalah sebagai berikut:

1. Kredensional yang ditetapkan secara eksplisit melalui konstruktor layanan-klien

1. Variabel-variabel lingkungan

1. Berkas kredensial bersama

1. Kredensi dimuat dari penyedia kredensi ECS (jika ada)

1. Kredensial yang diperoleh dengan menggunakan proses kredensi yang ditentukan dalam file AWS konfigurasi bersama atau file kredensial bersama. Untuk informasi selengkapnya, lihat [Memuat Kredensial di Node.js menggunakan Proses Kredenal yang Dikonfigurasi](loading-node-credentials-configured-credential-process.md).

1. Kredenal dimuat dari AWS IAM menggunakan penyedia kredensional EC2 instans Amazon (jika dikonfigurasi dalam metadata instans)

Untuk informasi selengkapnya, lihat [https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/Credentials.html](https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/Credentials.html)dan [https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/CredentialProviderChain.html](https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/CredentialProviderChain.html)di referensi API.

**Awas**  
Meskipun dimungkinkan untuk melakukannya, kami tidak menyarankan hard-coding AWS kredensional Anda dalam aplikasi Anda. Kredensi hard-coding menimbulkan risiko mengekspos ID kunci akses dan kunci akses rahasia Anda.

Topik di bagian ini menjelaskan cara memuat kredensi ke dalam Node.js.

**Topics**
+ [Memuat Kredensi di Node.js dari peran IAM untuk Amazon EC2](loading-node-credentials-iam.md)
+ [Memuat Kredensi untuk Fungsi Lambda Node.js](loading-node-credentials-lambda.md)
+ [Memuat Kredensial di Node.js dari File Kredensial Bersama](loading-node-credentials-shared.md)
+ [Memuat Kredensi di Node.js dari Variabel Lingkungan](loading-node-credentials-environment.md)
+ [Memuat Kredensial di Node.js dari File JSON](loading-node-credentials-json-file.md)
+ [Memuat Kredensial di Node.js menggunakan Proses Kredenal yang Dikonfigurasi](loading-node-credentials-configured-credential-process.md)

# Memuat Kredensi di Node.js dari peran IAM untuk Amazon EC2
<a name="loading-node-credentials-iam"></a>

Jika Anda menjalankan aplikasi Node.js di EC2 instans Amazon, Anda dapat memanfaatkan peran IAM untuk Amazon EC2 agar secara otomatis memberikan kredensi ke instans. Jika Anda mengonfigurasi instans Anda untuk menggunakan peran IAM, SDK secara otomatis memilih kredenal IAM untuk aplikasi Anda, sehingga tidak perlu menyediakan kredenal secara manual.

Untuk informasi selengkapnya tentang menambahkan peran IAM ke EC2 instans Amazon, lihat [Menggunakan peran IAM untuk EC2 instans Amazon](https://docs.aws.amazon.com/sdkref/latest/guide/access-iam-roles-for-ec2.html) di Panduan Referensi *Alat AWS SDKs dan Alat*.

# Memuat Kredensi untuk Fungsi Lambda Node.js
<a name="loading-node-credentials-lambda"></a>

Saat Anda membuat AWS Lambda fungsi, Anda harus membuat peran IAM khusus yang memiliki izin untuk menjalankan fungsi tersebut. Peran ini disebut *peran eksekusi*. Saat menyiapkan fungsi Lambda, Anda harus menentukan peran IAM yang Anda buat sebagai peran eksekusi yang sesuai.

Peran eksekusi menyediakan fungsi Lambda dengan kredenal yang dibutuhkan untuk menjalankan dan memanggil layanan web lainnya. Akibatnya, Anda tidak perlu memberikan kredensi ke kode Node.js yang Anda tulis dalam fungsi Lambda.

*Untuk informasi selengkapnya tentang membuat peran eksekusi Lambda, lihat [Mengelola Izin: Menggunakan Peran IAM (Peran Eksekusi) di Panduan](https://docs.aws.amazon.com/lambda/latest/dg/intro-permission-model.html#lambda-intro-execution-role) Pengembang.AWS Lambda *

# Memuat Kredensial di Node.js dari File Kredensial Bersama
<a name="loading-node-credentials-shared"></a>

Anda dapat menyimpan data AWS kredensional Anda dalam file bersama yang digunakan oleh SDKs dan antarmuka baris perintah. Saat SDK JavaScript dimuat, SDK secara otomatis mencari file kredensial bersama, yang diberi nama “kredensial”. Tempat Anda menyimpan file kredensi bersama tergantung pada sistem operasi Anda:
+ File kredensial bersama di Linux, Unix, dan macOS: `~/.aws/credentials`
+ File kredensial bersama di Windows: `C:\Users\USER_NAME\.aws\credentials`

Jika Anda belum memiliki file kredensial bersama, lihat. [Otentikasi SDK dengan AWS](getting-your-credentials.md) Setelah Anda mengikuti instruksi tersebut, Anda akan melihat teks yang mirip dengan yang berikut di file kredensial, di mana *<YOUR\$1ACCESS\$1KEY\$1ID>* ID kunci akses Anda dan *<YOUR\$1SECRET\$1ACCESS\$1KEY>* merupakan kunci akses rahasia Anda:

```
[default]
aws_access_key_id = <YOUR_ACCESS_KEY_ID>
aws_secret_access_key = <YOUR_SECRET_ACCESS_KEY>
```

Untuk contoh yang menunjukkan file ini sedang digunakan, lihat[Memulai di Node.js](getting-started-nodejs.md).

Judul `[default]` bagian menentukan profil default dan nilai-nilai terkait untuk kredensional. Anda dapat membuat profil tambahan dalam file konfigurasi bersama yang sama, masing-masing dengan informasi kredensialnya sendiri. Contoh berikut menunjukkan file konfigurasi dengan profil default dan dua profil tambahan:

```
[default] ; default profile
aws_access_key_id = <DEFAULT_ACCESS_KEY_ID>
aws_secret_access_key = <DEFAULT_SECRET_ACCESS_KEY>
    
[personal-account] ; personal account profile
aws_access_key_id = <PERSONAL_ACCESS_KEY_ID>
aws_secret_access_key = <PERSONAL_SECRET_ACCESS_KEY>
    
[work-account] ; work account profile
aws_access_key_id = <WORK_ACCESS_KEY_ID>
aws_secret_access_key = <WORK_SECRET_ACCESS_KEY>
```

Secara default, SDK memeriksa variabel `AWS_PROFILE` lingkungan untuk menentukan profil mana yang akan digunakan. Jika `AWS_PROFILE` variabel tidak disetel di lingkungan Anda, SDK akan menggunakan kredensional untuk profil tersebut. `[default]` Untuk menggunakan salah satu profil alternatif, atur atau ubah nilai variabel `AWS_PROFILE` lingkungan. Misalnya, mengingat file konfigurasi yang ditunjukkan di atas, untuk menggunakan kredensi dari akun kerja, atur variabel `AWS_PROFILE` lingkungan ke `work-account` (yang sesuai untuk sistem operasi Anda).

**catatan**  
Saat mengatur variabel lingkungan, pastikan untuk mengambil tindakan yang tepat setelahnya (sesuai dengan kebutuhan sistem operasi Anda) untuk membuat variabel tersedia di shell atau lingkungan perintah.

Setelah menyetel variabel lingkungan (jika diperlukan), Anda dapat menjalankan JavaScript file yang menggunakan SDK, seperti misalnya, file bernama`script.js`.

```
$ node script.js
```

Anda juga dapat secara eksplisit memilih profil yang digunakan oleh SDK, baik dengan menyetel `process.env.AWS_PROFILE` sebelum memuat SDK, atau dengan memilih penyedia kredensi seperti yang ditunjukkan pada contoh berikut:

```
var credentials = new AWS.SharedIniFileCredentials({profile: 'work-account'});
AWS.config.credentials = credentials;
```

# Memuat Kredensi di Node.js dari Variabel Lingkungan
<a name="loading-node-credentials-environment"></a>

SDK secara otomatis mendeteksi AWS kredensial yang ditetapkan sebagai variabel di lingkungan Anda dan menggunakannya untuk permintaan SDK, sehingga menghilangkan kebutuhan untuk mengelola kredensi dalam aplikasi Anda. Variabel lingkungan yang Anda tetapkan untuk memberikan kredensialnya adalah:
+ `AWS_ACCESS_KEY_ID`
+ `AWS_SECRET_ACCESS_KEY`
+ `AWS_SESSION_TOKEN`

Untuk detail selengkapnya tentang pengaturan variabel lingkungan, lihat [Dukungan variabel lingkungan](https://docs.aws.amazon.com/sdkref/latest/guide/environment-variables.html) di *Panduan Referensi Alat AWS SDKs dan Alat*.

# Memuat Kredensial di Node.js dari File JSON
<a name="loading-node-credentials-json-file"></a>

Anda dapat memuat konfigurasi dan kredensional dari dokumen JSON pada disk menggunakan. `AWS.config.loadFromPath` Jalur yang ditentukan relatif terhadap direktori kerja saat ini dari proses Anda. Misalnya, untuk memuat kredensi dari `'config.json'` file dengan konten berikut:

```
{ "accessKeyId": <YOUR_ACCESS_KEY_ID>, "secretAccessKey": <YOUR_SECRET_ACCESS_KEY>, "region": "us-east-1" }
```

Kemudian gunakan kode berikut:

```
var AWS = require("aws-sdk");
AWS.config.loadFromPath('./config.json');
```

**catatan**  
Memuat data konfigurasi dari dokumen JSON akan me-reset semua data konfigurasi yang ada. Tambahkan data konfigurasi tambahan setelah menggunakan teknik ini. Memuat kredensi dari dokumen JSON tidak didukung dalam skrip browser.

# Memuat Kredensial di Node.js menggunakan Proses Kredenal yang Dikonfigurasi
<a name="loading-node-credentials-configured-credential-process"></a>

Anda dapat mencari kredensi dengan menggunakan metode yang tidak dibangun ke dalam SDK. Untuk melakukannya, tentukan proses kredensi dalam file AWS config bersama atau file kredensial bersama. Jika variabel `AWS_SDK_LOAD_CONFIG` lingkungan disetel ke nilai apa pun, SDK akan lebih memilih proses yang ditentukan dalam file konfigurasi daripada proses yang ditentukan dalam file kredensial (jika ada).

Untuk detail tentang menentukan proses kredensi dalam file AWS konfigurasi bersama atau file kredensial bersama, lihat *Referensi AWS CLI Perintah*, khususnya informasi tentang [Sumber](https://docs.aws.amazon.com/cli/latest/topic/config-vars.html#sourcing-credentials-from-external-processes) Kredensial Dari Proses Eksternal.

Untuk informasi tentang penggunaan variabel `AWS_SDK_LOAD_CONFIG` lingkungan, lihat [Menggunakan File Config Bersama](setting-region.md#setting-region-config-file) di dokumen ini.

# Menyetel Kredensial di Browser Web
<a name="setting-credentials-browser"></a>

Ada beberapa cara untuk memasok kredensional Anda ke SDK dari skrip browser. Beberapa di antaranya lebih aman dan yang lain memberikan kenyamanan yang lebih besar saat mengembangkan skrip. Berikut adalah cara-cara Anda dapat memberikan kredensi Anda dalam urutan rekomendasi:

1. Menggunakan Identitas Amazon Cognito untuk mengautentikasi pengguna dan menyediakan kredensional

1. Menggunakan identitas federasi web

1. Hard code dalam script

**Awas**  
Kami tidak menyarankan hard coding AWS kredensional Anda dalam skrip Anda. Kredensi pengkodean keras menimbulkan risiko mengekspos ID kunci akses dan kunci akses rahasia Anda.

**Topics**
+ [Menggunakan Identitas Amazon Cognito untuk Mengautentikasi Pengguna](loading-browser-credentials-cognito.md)
+ [Menggunakan Identitas Federasi Web untuk Mengautentikasi Pengguna](loading-browser-credentials-federated-id.md)
+ [Contoh Identitas Federasi Web](config-web-identity-examples.md)

# Menggunakan Identitas Amazon Cognito untuk Mengautentikasi Pengguna
<a name="loading-browser-credentials-cognito"></a>

Cara yang disarankan untuk mendapatkan AWS kredensi untuk skrip browser Anda adalah dengan menggunakan objek kredensi Identitas Amazon Cognito,. `AWS.CognitoIdentityCredentials` Amazon Cognito memungkinkan otentikasi pengguna melalui penyedia identitas pihak ketiga.

Untuk menggunakan Identitas Amazon Cognito, Anda harus terlebih dahulu membuat kumpulan identitas di konsol Amazon Cognito. Kumpulan identitas mewakili grup identitas yang disediakan aplikasi Anda kepada pengguna Anda. Identitas yang diberikan kepada pengguna secara unik mengidentifikasi setiap akun pengguna. Identitas Amazon Cognito identitas bukan kredensial. Mereka ditukar dengan kredensi menggunakan dukungan federasi identitas web di AWS Security Token Service ().AWS STS

Amazon Cognito membantu Anda mengelola abstraksi identitas di beberapa penyedia identitas dengan objek. `AWS.CognitoIdentityCredentials` Identitas yang dimuat kemudian ditukar dengan kredensi di. AWS STS

## Mengonfigurasi Objek Kredensial Identitas Amazon Cognito
<a name="browser-cognito-configuration"></a>

Jika Anda belum membuatnya, buat kumpulan identitas untuk digunakan dengan skrip browser Anda di konsol [Amazon Cognito](https://console.aws.amazon.com/cognito) sebelum Anda mengonfigurasi. `AWS.CognitoIdentityCredentials` Buat dan kaitkan peran IAM yang diautentikasi dan tidak diautentikasi untuk kumpulan identitas Anda.

Pengguna yang tidak diautentikasi tidak meminta agar identitas mereka diverifikasi, sehingga peran ini sesuai untuk pengguna tamu aplikasi Anda atau jika pengguna meminta agar identitas mereka diverifikasi dan itu tidak dipermasalahkan. Pengguna yang diautentikasi masuk ke aplikasi Anda melalui penyedia identitas pihak ketiga yang memverifikasi identitas mereka. Pastikan Anda menjangkau izin sumber daya dengan tepat sehingga Anda tidak memberikan akses kepada mereka dari pengguna yang tidak terautentikasi.

Setelah mengonfigurasi kumpulan identitas dengan penyedia identitas yang dilampirkan, Anda dapat menggunakannya `AWS.CognitoIdentityCredentials` untuk mengautentikasi pengguna. Untuk mengkonfigurasi kredensial aplikasi Anda agar dapat menggunakan `AWS.CognitoIdentityCredentials`, atur properti `credentials` baik `AWS.Config` atau konfigurasi per layanan. Contoh berikut menggunakan `AWS.Config`:

```
AWS.config.credentials = new AWS.CognitoIdentityCredentials({
  IdentityPoolId: 'us-east-1:1699ebc0-7900-4099-b910-2df94f52a030',
  Logins: { // optional tokens, used for authenticated login
    'graph.facebook.com': 'FBTOKEN',
    'www.amazon.com': 'AMAZONTOKEN',
    'accounts.google.com': 'GOOGLETOKEN'
  }
});
```

Properti opsional `Logins` adalah peta nama penyedia identitas untuk token identitas bagi penyedia tersebut. Bagaimana Anda bisa mendapatkan token dari penyedia identitas Anda tergantung pada penyedia yang Anda gunakan. Misalnya, jika Facebook adalah salah satu penyedia identitas Anda, Anda dapat menggunakan fungsi `FB.login` dari [SDK Facebook](https://developers.facebook.com/docs/facebook-login/web) untuk mendapatkan token penyedia identitas:

```
FB.login(function (response) {
  if (response.authResponse) { // logged in
    AWS.config.credentials = new AWS.CognitoIdentityCredentials({
      IdentityPoolId: 'us-east-1:1699ebc0-7900-4099-b910-2df94f52a030',
      Logins: {
        'graph.facebook.com': response.authResponse.accessToken
      }
    });

    s3 = new AWS.S3; // we can now create our service object

    console.log('You are now logged in.');
  } else {
    console.log('There was a problem logging you in.');
  }
});
```

## Mengalihkan Pengguna yang Tidak Diautentikasi ke Pengguna yang Diautentikasi
<a name="browser-switching-unauthenticated-users"></a>

Amazon Cognito mendukung pengguna yang diautentikasi dan tidak diautentikasi. Pengguna yang tidak diautentikasi menerima akses ke sumber daya Anda meskipun mereka tidak masuk dengan penyedia identitas Anda. Tingkat akses ini berguna untuk menampilkan konten kepada pengguna sebelum masuk. Setiap pengguna yang tidak diautentikasi memiliki identitas unik di Amazon Cognito meskipun mereka belum masuk dan diautentikasi secara individual.

### Pengguna Awalnya Tidak Diautentikasi
<a name="browser-switching-initially-unauthenticated-user"></a>

Pengguna biasanya memulai dengan peran yang tidak diautentikasi, di mana Anda menetapkan properti kredensial objek konfigurasi Anda tanpa properti. `Logins` Dalam kasus ini, konfigurasi default Anda mungkin terlihat seperti berikut ini:

```
// set the default config object
var creds = new AWS.CognitoIdentityCredentials({
 IdentityPoolId: 'us-east-1:1699ebc0-7900-4099-b910-2df94f52a030'
});
AWS.config.credentials = creds;
```

### Beralih ke Pengguna Terautentikasi
<a name="switch-to-authenticated"></a>

Ketika pengguna yang tidak diautentikasi masuk ke penyedia identitas dan Anda memiliki token, Anda dapat mengalihkan pengguna dari yang tidak diautentikasi ke otentikasi dengan memanggil fungsi kustom yang memperbarui objek kredensi dan menambahkan token: `Logins`

```
// Called when an identity provider has a token for a logged in user
function userLoggedIn(providerName, token) {
  creds.params.Logins = creds.params.Logins || {};
  creds.params.Logins[providerName] = token;
                    
  // Expire credentials to refresh them on the next request
  creds.expired = true;
}
```

Anda juga dapat membuat `CognitoIdentityCredentials` objek. Jika ya, Anda harus mengatur ulang properti kredensial dari objek layanan yang ada yang Anda buat. Objek layanan dibaca dari konfigurasi global hanya pada inisialisasi objek. 

Untuk informasi selengkapnya tentang `CognitoIdentityCredentials` objek, lihat [https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/CognitoIdentityCredentials.html](https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/CognitoIdentityCredentials.html)di Referensi AWS SDK untuk JavaScript API. 

# Menggunakan Identitas Federasi Web untuk Mengautentikasi Pengguna
<a name="loading-browser-credentials-federated-id"></a>

Anda dapat langsung mengkonfigurasi penyedia identitas individu untuk mengakses AWS sumber daya menggunakan federasi identitas web. AWS saat ini mendukung otentikasi pengguna menggunakan federasi identitas web melalui beberapa penyedia identitas:
+ [Login with Amazon](https://login.amazon.com)
+ [Login Facebook](https://www.facebook.com/about/login)
+ [Masuk Google](https://developers.google.com/identity/)

Anda harus terlebih dahulu mendaftarkan aplikasi Anda ke penyedia yang didukung aplikasi Anda. Selanjutnya, buat peran IAM dan atur izin untuk itu. Peran IAM yang Anda buat kemudian digunakan untuk memberikan izin yang Anda konfigurasikan untuk itu melalui penyedia identitas masing-masing. Misalnya, Anda dapat mengatur peran yang memungkinkan pengguna yang masuk melalui Facebook memiliki akses baca ke bucket Amazon S3 tertentu yang Anda kontrol.

Setelah Anda memiliki peran IAM dengan hak istimewa yang dikonfigurasi dan aplikasi yang terdaftar dengan penyedia identitas pilihan Anda, Anda dapat mengatur SDK untuk mendapatkan kredensi untuk peran IAM menggunakan kode pembantu, sebagai berikut:

```
AWS.config.credentials = new AWS.WebIdentityCredentials({
   RoleArn: 'arn:aws:iam::<AWS_ACCOUNT_ID>/:role/<WEB_IDENTITY_ROLE_NAME>',
   ProviderId: 'graph.facebook.com|www.amazon.com', // this is null for Google
   WebIdentityToken: ACCESS_TOKEN
});
```

Nilai dalam `ProviderId` parameter tergantung pada penyedia identitas yang ditentukan. Nilai dalam `WebIdentityToken` parameter adalah token akses yang diambil dari login yang berhasil dengan penyedia identitas. Untuk informasi selengkapnya tentang cara mengonfigurasi dan mengambil token akses untuk setiap penyedia identitas, lihat dokumentasi untuk penyedia identitas.

## Langkah 1: Mendaftar dengan Penyedia Identitas
<a name="config-web-identity-register"></a>

Untuk memulai, daftarkan aplikasi dengan penyedia identitas yang Anda pilih untuk didukung. Anda akan diminta untuk memberikan informasi yang mengidentifikasi aplikasi Anda dan mungkin penulisnya. Ini memastikan bahwa penyedia identitas tahu siapa yang menerima informasi pengguna mereka. Dalam setiap kasus, penyedia identitas akan mengeluarkan ID aplikasi yang Anda gunakan untuk mengonfigurasi peran pengguna.

## Langkah 2: Membuat Peran IAM untuk Penyedia Identitas
<a name="config-web-identity-role"></a>

Setelah Anda mendapatkan ID aplikasi dari penyedia identitas, buka konsol IAM di [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/)untuk membuat peran IAM baru.

**Untuk membuat peran IAM untuk penyedia identitas**

1. Buka bagian **Peran** konsol dan kemudian pilih **Buat Peran Baru**.

1. Ketik nama untuk peran baru yang membantu Anda melacak penggunaannya, seperti**facebookIdentity**, lalu pilih **Langkah Berikutnya**.

1. Di **Pilih Jenis Peran**, pilih **Peran untuk Akses Penyedia Identitas**.

1. Untuk **memberikan akses ke penyedia identitas web**, pilih **Pilih**.

1. Dari daftar **Penyedia Identitas**, pilih penyedia identitas yang ingin Anda gunakan untuk peran IAM ini.  
![\[Memilih Peran untuk Akses Penyedia Identitas\]](http://docs.aws.amazon.com/id_id/sdk-for-javascript/v2/developer-guide/images/iam-provider-select.png)

1. Ketik ID aplikasi yang disediakan oleh penyedia identitas di **ID Aplikasi** dan kemudian pilih **Langkah Berikutnya**.

1. Konfigurasikan izin untuk sumber daya yang ingin Anda paparkan, yang memungkinkan akses ke operasi tertentu pada sumber daya tertentu. *Untuk informasi selengkapnya tentang izin IAM, lihat [Ringkasan Izin AWS IAM di Panduan Pengguna](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_permissions.html) IAM.* Tinjau dan, jika perlu, sesuaikan hubungan kepercayaan peran, lalu pilih **Langkah Berikutnya**.

1. Lampirkan kebijakan tambahan yang Anda butuhkan dan kemudian pilih **Langkah Berikutnya**. Untuk informasi lebih lanjut tentang kebijakan IAM, lihat [Gambaran umum Kebijakan IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html) dalam *Panduan Pengguna IAM*.

1. Tinjau peran baru dan kemudian pilih **Buat Peran**.

Anda dapat memberikan batasan lain untuk peran tersebut, seperti melingkupinya ke pengguna tertentu. IDs Jika peran memberikan izin menulis ke sumber daya Anda, pastikan Anda mencakupkan peran dengan benar kepada pengguna dengan hak istimewa yang benar, jika tidak, setiap pengguna dengan identitas Amazon, Facebook, atau Google akan dapat memodifikasi sumber daya dalam aplikasi Anda.

Untuk informasi selengkapnya tentang penggunaan federasi identitas web di IAM, lihat [Tentang Federasi Identitas Web](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_providers_oidc.html) di *Panduan Pengguna IAM*.

## Langkah 3: Mendapatkan Token Akses Penyedia Setelah Login
<a name="config-web-identity-obtain-token"></a>

Siapkan tindakan login untuk aplikasi Anda dengan menggunakan SDK penyedia identitas. Anda dapat mengunduh dan menginstal JavaScript SDK dari penyedia identitas yang memungkinkan login pengguna, menggunakan salah satu OAuth atau OpenID. Untuk informasi tentang cara mengunduh dan menyiapkan kode SDK di aplikasi Anda, lihat dokumentasi SDK untuk penyedia identitas Anda:
+ [Login with Amazon](https://login.amazon.com/website)
+ [Login Facebook](https://developers.facebook.com/docs/javascript)
+ [Masuk Google](https://developers.google.com/identity/)

## Langkah 4: Memperoleh Kredensi Sementara
<a name="config-web-identity-get-credentials"></a>

Setelah aplikasi, peran, dan izin sumber daya dikonfigurasi, tambahkan kode ke aplikasi Anda untuk mendapatkan kredensi sementara. Kredensi ini disediakan melalui federasi identitas web yang AWS Security Token Service menggunakan. Pengguna masuk ke penyedia identitas, yang mengembalikan token akses. Siapkan `AWS.WebIdentityCredentials` objek menggunakan ARN untuk peran IAM yang Anda buat untuk penyedia identitas ini:

```
AWS.config.credentials = new AWS.WebIdentityCredentials({
    RoleArn: 'arn:aws:iam::<AWS_ACCOUNT_ID>:role/<WEB_IDENTITY_ROLE_NAME>',
    ProviderId: 'graph.facebook.com|www.amazon.com', // Omit this for Google
    WebIdentityToken: ACCESS_TOKEN // Access token from identity provider
});
```

Objek layanan yang dibuat selanjutnya akan memiliki kredensional yang tepat. Objek yang dibuat sebelum menyetel `AWS.config.credentials` properti tidak akan memiliki kredensi saat ini.

Anda juga dapat membuat `AWS.WebIdentityCredentials` sebelum mengambil token akses. Ini memungkinkan Anda untuk membuat objek layanan yang bergantung pada kredensi sebelum memuat token akses. Untuk melakukan ini, buat objek kredensial tanpa parameter: `WebIdentityToken`

```
AWS.config.credentials = new AWS.WebIdentityCredentials({
  RoleArn: 'arn:aws:iam::<AWS_ACCOUNT_ID>:role/<WEB_IDENTITY_ROLE_NAME>',
  ProviderId: 'graph.facebook.com|www.amazon.com' // Omit this for Google
});

// Create a service object
var s3 = new AWS.S3;
```

Kemudian atur `WebIdentityToken` callback dari SDK penyedia identitas yang berisi token akses:

```
AWS.config.credentials.params.WebIdentityToken = accessToken;
```

# Contoh Identitas Federasi Web
<a name="config-web-identity-examples"></a>

Berikut adalah beberapa contoh menggunakan identitas federasi web untuk mendapatkan kredensi di browser. JavaScript Contoh-contoh ini harus dijalankan dari skema host http://atau https://untuk memastikan penyedia identitas dapat mengarahkan ulang ke aplikasi Anda. 

## Login with Amazon Contoh
<a name="config-web-identity-amazon-login-example"></a>

Kode berikut menunjukkan cara menggunakan Login with Amazon sebagai penyedia identitas. 

```
<a href="#" id="login">
  <img border="0" alt="Login with Amazon"
    src="https://images-na.ssl-images-amazon.com/images/G/01/lwa/btnLWA_gold_156x32.png"
    width="156" height="32" />
</a>
<div id="amazon-root"></div>
<script type="text/javascript">
  var s3 = null;
  var clientId = 'amzn1.application-oa2-client.1234567890abcdef'; // client ID
  var roleArn = 'arn:aws:iam::<AWS_ACCOUNT_ID>:role/<WEB_IDENTITY_ROLE_NAME>';

  window.onAmazonLoginReady = function() {
    amazon.Login.setClientId(clientId); // set client ID

    document.getElementById('login').onclick = function() {
      amazon.Login.authorize({scope: 'profile'}, function(response) {
        if (!response.error) { // logged in
          AWS.config.credentials = new AWS.WebIdentityCredentials({
            RoleArn: roleArn,
            ProviderId: 'www.amazon.com',
            WebIdentityToken: response.access_token
          });

          s3 = new AWS.S3();

          console.log('You are now logged in.');
        } else {
          console.log('There was a problem logging you in.');
        }
      });
    };
  };

  (function(d) {
    var a = d.createElement('script'); a.type = 'text/javascript';
    a.async = true; a.id = 'amazon-login-sdk';
    a.src = 'https://api-cdn.amazon.com/sdk/login1.js';
    d.getElementById('amazon-root').appendChild(a);
  })(document);
</script>
```

## Contoh Login Facebook
<a name="config-web-identity-facebook-login-example"></a>

Kode berikut menunjukkan cara menggunakan Facebook Login sebagai penyedia identitas:

```
<button id="login">Login</button>
<div id="fb-root"></div>
<script type="text/javascript">
var s3 = null;
var appId = '1234567890'; // Facebook app ID
var roleArn = 'arn:aws:iam::<AWS_ACCOUNT_ID>:role/<WEB_IDENTITY_ROLE_NAME>';

window.fbAsyncInit = function() {
  // init the FB JS SDK
  FB.init({appId: appId});

  document.getElementById('login').onclick = function() {
    FB.login(function (response) {
      if (response.authResponse) { // logged in
        AWS.config.credentials = new AWS.WebIdentityCredentials({
          RoleArn: roleArn,
          ProviderId: 'graph.facebook.com',
          WebIdentityToken: response.authResponse.accessToken
        });

        s3 = new AWS.S3;

        console.log('You are now logged in.');
      } else {
        console.log('There was a problem logging you in.');
      }
    });
  };
};

// Load the FB JS SDK asynchronously
(function(d, s, id){
   var js, fjs = d.getElementsByTagName(s)[0];
   if (d.getElementById(id)) {return;}
   js = d.createElement(s); js.id = id;
   js.src = "//connect.facebook.net/en_US/all.js";
   fjs.parentNode.insertBefore(js, fjs);
 }(document, 'script', 'facebook-jssdk'));
</script>
```

## Contoh Masuk Google\$1
<a name="config-web-identity-google-login-example"></a>

Kode berikut menunjukkan cara menggunakan Google\$1 Sign-in sebagai penyedia identitas. Token akses yang digunakan untuk federasi identitas web dari Google disimpan `response.id_token` bukan `access_token` seperti penyedia identitas lainnya. 

```
<span
  id="login"
  class="g-signin"
  data-height="short"
  data-callback="loginToGoogle"
  data-cookiepolicy="single_host_origin"
  data-requestvisibleactions="http://schemas.google.com/AddActivity"
  data-scope="https://www.googleapis.com/auth/plus.login">
</span>
<script type="text/javascript">
  var s3 = null;
  var clientID = '1234567890.apps.googleusercontent.com'; // Google client ID
  var roleArn = 'arn:aws:iam::<AWS_ACCOUNT_ID>:role/<WEB_IDENTITY_ROLE_NAME>';

  document.getElementById('login').setAttribute('data-clientid', clientID);
  function loginToGoogle(response) {
    if (!response.error) {
      AWS.config.credentials = new AWS.WebIdentityCredentials({
        RoleArn: roleArn, WebIdentityToken: response.id_token
      });

      s3 = new AWS.S3();

      console.log('You are now logged in.');
    } else {
      console.log('There was a problem logging you in.');
    }
  }

  (function() {
    var po = document.createElement('script'); po.type = 'text/javascript'; po.async = true;
    po.src = 'https://apis.google.com/js/client:plusone.js';
    var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(po, s);
  })();
 </script>
```