Hubungkan AWS CloudFront ke Sistem Masuk Tunggal (SSO)

Saya sedang mengerjakan situs web yang diterapkan ke AWS menggunakan S3 sebagai penyimpanan dan CloudFront CDN. Ini adalah situs web statis dengan satu file html menggunakan JS untuk menampilkan konten berdasarkan string kueri. Pemiliknya adalah perusahaan yang telah mendirikan SSO dalam organisasinya, mereka menggunakan IBM Tivoli sebagai IdP. Bagian yang saya lewatkan adalah bagaimana permintaan otorisasi dibuat?

Saya telah membaca ini:

http://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_providers.html http://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_providers_create_saml.html http://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-idp.html http://docs.aws.amazon.com/IAM/terbaru/UserGuide/id_roles_create_for-idp_saml.html http://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_providers_create_saml.html http://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_providers_create_saml_relying-party.html

Banyak di antaranya yang dekat namun melenceng. Ini bukan instans EC2, bukan Elastic Beanstalk, saya tidak mencoba mengakses konsol AWS, dan mereka tidak menggunakan AD untuk SSO. Itu hanya sebuah situs web.

Sejauh ini saya punya:

  • membuat penyedia SAML di AWS dan mengimpor metadata dari IdP mereka
  • membuat peran IAM
  • membangun hubungan kepercayaan antara peran dan penyedia
  • menetapkan izin s3:getObject untuk peran tersebut
  • memberi mereka metadata dari AWS dengan rincian spesifik tentang pernyataan SAML yang perlu diberikan.

Pertanyaan saya adalah bagaimana kedua belah pihak bisa terhubung. Apakah ini dilakukan secara otomatis oleh AWS ketika ada orang yang mencoba mengakses situs? Apakah perusahaan membuat tautan khusus di portalnya untuk memulai situs dengan SAML? Apa jadinya jika pengguna cukup mengetikkan nama domain di browser? Apakah kode perlu ditambahkan ke situs web?

TIA, Mike


person Mike    schedule 11.04.2017    source sumber
comment
Anda mengutip dokumentasi IAM, yang pikir menurut Anda tidak akan memberikan hasil yang Anda inginkan, khususnya di SPA. Baca tentang dukungan AWS Cognito untuk penyedia identitas SAML dan tentang Cognito secara umum dan lihat apakah ini tampaknya lebih cocok dengan kebutuhan Anda.   -  person Michael - sqlbot    schedule 12.04.2017
comment
@sqlbot. Terima kasih, saya kenal dengan cognito. Saya memiliki klien lain dengan aplikasi iOS yang mendapatkan file dari CloudFront dan kami menggunakan cognito untuk itu. Namun untuk SSO berbasis SAML sepertinya IAM diperlukan. Dari dokumen... Untuk bersiap membuat peran untuk federasi SAML 2.0: Sebelum Anda membuat peran untuk federasi berbasis SAML, Anda harus membuat penyedia SAML di IAM. Untuk informasi selengkapnya, lihat Membuat Penyedia Identitas SAML.   -  person Mike    schedule 12.04.2017
comment
Mungkin. Dengan IAM & SAML, Anda hampir pasti memerlukan server dan saya menduga database juga, meskipun hal tersebut dapat dipenuhi dengan Lambda & DynamoDB jika saya benar. Di sisi lain, Anda dapat menggunakan penyedia identitas yang mendukung SAML dengan Amazon Cognito untuk memberikan alur orientasi sederhana bagi pengguna Anda. Namun tentu saja niat saya bukan untuk memperdebatkan hal tersebut, hanya menjelaskan apa yang dimaksud dengan sepertinya bagi saya. Anda mungkin benar.   -  person Michael - sqlbot    schedule 12.04.2017
comment
@sqlbot, Sekali lagi terima kasih. Saya telah selesai membaca dokumen dari tautan Anda dan ada sejumlah tumpang tindih. Ada instruksi di dokumen Cognito yang mengatakan saya masih harus membuat peran IAM dan sebagainya. Saya melanjutkan dan membuat kumpulan identitas Cognito kalau-kalau itu membuka beberapa opsi baru. Namun di bagian paling akhir ada bagian tentang mengautentikasi pengguna dengan IdP... itulah bagian yang saya perlukan. Ini memberikan info tentang iOS dan Android tetapi tidak pada JavaScript. Masih mencari...   -  person Mike    schedule 12.04.2017


Jawaban (1)


Memutar kembali untuk menutup pertanyaan ini. Saya menemukan bahwa AWS tidak memiliki cara untuk menambahkan lapisan SSO ke situs web yang dihosting CloudFront Anda. Itu perlu diterapkan dalam kode situs web.

Saya akhirnya menggunakan modul npm 'express-saml' untuk menangani pertukaran saml dan tabel DynamoDB yang sangat sederhana untuk menyimpan login di sisi SP. Aws-sdk digunakan untuk DynamoDB.

Mike

person Mike    schedule 04.06.2017
comment
Tampaknya pendekatan yang direkomendasikan sekarang (2019) mencakup Cognito (untuk autentikasi berbasis AWS) atau menggunakan Lambda@edge untuk mengimplementasikan penyedia autentikasi khusus (saya kesulitan dengan keamanan/peran seputar penyiapan ini sekarang). docs.aws.amazon.com/lambda/latest/dg/ lambda-edge.html github .com/nzoschke/gofaas/blob/master/docs/ - person Squiggle; 18.10.2019