เชื่อมต่อ AWS CloudFront กับการลงชื่อเพียงครั้งเดียว (SSO)

ฉันกำลังทำงานกับเว็บไซต์ที่ใช้งานกับ AWS โดยใช้ S3 เป็นที่เก็บข้อมูลและ CloudFront CDN เป็นเว็บไซต์แบบคงที่ที่มีไฟล์ html ไฟล์เดียวโดยใช้ JS เพื่อแสดงเนื้อหาตามสตริงการสืบค้น เจ้าของเป็นองค์กรที่ได้จัดตั้ง SSO ภายในองค์กรของตนแล้ว โดยใช้ IBM Tivoli เป็น IdP ส่วนที่ขาดหายไปคือคำขออนุญาตเกิดขึ้นได้อย่างไร

ฉันได้อ่านสิ่งเหล่านี้แล้ว:

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/ล่าสุด/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

สิ่งเหล่านี้หลายรายการอยู่ใกล้แต่ไม่อยู่ในเครื่องหมาย ไม่ใช่อินสแตนซ์ EC2 ไม่ใช่ Elastic Beanstalk ฉันไม่ได้พยายามเข้าถึงคอนโซล AWS และพวกเขาไม่ได้ใช้ AD สำหรับ SSO มันเป็นเพียงเว็บไซต์

จนถึงตอนนี้ฉันมี:

  • สร้างผู้ให้บริการ SAML ใน AWS และนำเข้าข้อมูลเมตาจาก IdP
  • สร้างบทบาท IAM
  • สร้างความสัมพันธ์ความไว้วางใจระหว่างบทบาทและผู้ให้บริการ
  • สร้างสิทธิ์ s3:getObject สำหรับบทบาทนี้
  • ให้ข้อมูลเมตาจาก AWS พร้อมข้อมูลเฉพาะเกี่ยวกับการยืนยัน SAML ที่ต้องระบุ

คำถามของฉันคือทั้งสองฝ่ายเชื่อมโยงกันอย่างไร AWS จะทำโดยอัตโนมัติเมื่อมีใครพยายามเข้าถึงไซต์หรือไม่ องค์กรสร้างลิงก์พิเศษในพอร์ทัลเพื่อเริ่มต้นไซต์ด้วย SAML หรือไม่ จะเกิดอะไรขึ้นหากผู้ใช้เพียงพิมพ์ชื่อโดเมนในเบราว์เซอร์? จำเป็นต้องเพิ่มรหัสในเว็บไซต์หรือไม่?

ทีไอเอ, ไมค์


person Mike    schedule 11.04.2017    source แหล่งที่มา
comment
คุณกำลังอ้างถึงเอกสาร IAM ซึ่งฉันคิดว่าคุณจะพบว่าจะไม่ทำสิ่งที่คุณต้องการจริงๆ โดยเฉพาะใน SPA อ่านเกี่ยวกับ การสนับสนุน AWS Cognito สำหรับผู้ให้บริการข้อมูลประจำตัว SAML และเกี่ยวกับ Cognito โดยทั่วไป และดูว่าดูเหมือนว่าจะไม่ตรงกับสิ่งที่คุณต้องการมากกว่าหรือไม่   -  person Michael - sqlbot    schedule 12.04.2017
comment
@sqlbot. ขอบคุณครับ ผมคุ้นเคยกับ Cognito แล้ว ฉันมีไคลเอนต์อื่นที่มีแอป iOS ที่ได้รับไฟล์จาก CloudFront และเราใช้ Cognito สำหรับสิ่งนั้น อย่างไรก็ตาม สำหรับ SSO ที่ใช้ SAML ดูเหมือนว่าจำเป็นต้องใช้ IAM จากเอกสาร... เพื่อเตรียมสร้างบทบาทสำหรับการเชื่อมโยง SAML 2.0: ก่อนที่คุณจะสร้างบทบาทสำหรับการเชื่อมโยงที่ใช้ SAML คุณต้องสร้างผู้ให้บริการ SAML ใน IAM สำหรับข้อมูลเพิ่มเติม โปรดดูการสร้างผู้ให้บริการข้อมูลประจำตัว SAML   -  person Mike    schedule 12.04.2017
comment
อาจจะ. ด้วย IAM และ SAML คุณเกือบจะต้องมีเซิร์ฟเวอร์อย่างแน่นอน และฉันก็สงสัยฐานข้อมูลด้วยเช่นกัน แม้ว่าสิ่งเหล่านั้นจะพอใจกับ Lambda และ DynamoDB ก็ตามหากฉันพูดถูก ในทางกลับกัน คุณสามารถใช้ผู้ให้บริการข้อมูลประจำตัวที่รองรับ SAML กับ Amazon Cognito เพื่อให้ขั้นตอนการเริ่มต้นใช้งานที่เรียบง่ายสำหรับผู้ใช้ของคุณ แต่แน่นอนว่าความตั้งใจของฉันไม่ได้โต้แย้งในประเด็น เพียงอธิบายว่าอะไร มันดูเหมือนกับฉัน คุณอาจจะค่อนข้างถูกต้อง   -  person Michael - sqlbot    schedule 12.04.2017
comment
@sqlbot ขอบคุณอีกครั้ง ฉันอ่านเอกสารจากลิงก์ของคุณจบแล้ว และมีการทับซ้อนกันอยู่จำนวนหนึ่ง มีคำแนะนำในเอกสาร Cognito ที่บอกว่าฉันยังต้องสร้างบทบาท IAM และอื่นๆ ฉันดำเนินการต่อและสร้างกลุ่มข้อมูลประจำตัวของ Cognito เผื่อว่าจะเปิดตัวเลือกใหม่ขึ้นมา อย่างไรก็ตามในตอนท้ายสุดมีส่วนในการตรวจสอบสิทธิ์ผู้ใช้ด้วย IdP... นั่นคือส่วนที่ฉันต้องการ มันให้ข้อมูลบน iOS และ Android แต่ไม่ใช่ JavaScript ยังคงตามหา...   -  person Mike    schedule 12.04.2017


คำตอบ (1)


วนกลับมาเพื่อปิดคำถามนี้ ฉันพบว่า AWS ไม่มีวิธีเพิ่มเลเยอร์ SSO ไปยังเว็บไซต์ที่โฮสต์บน CloudFront ของคุณ ที่ต้องดำเนินการภายในโค้ดของเว็บไซต์

ฉันปิดท้ายด้วยการใช้โมดูล npm 'express-saml' เพื่อจัดการการแลกเปลี่ยน saml และตาราง DynamoDB ที่เรียบง่ายมากสำหรับจัดเก็บข้อมูลการเข้าสู่ระบบทางฝั่ง SP aws-sdk ใช้สำหรับ DynamoDB

ไมค์

person Mike    schedule 04.06.2017
comment
ดูเหมือนว่าแนวทางที่แนะนำในขณะนี้ (2019) รวมถึง Cognito (สำหรับการตรวจสอบสิทธิ์บน AWS) หรือใช้ Lambda@edge เพื่อใช้งานผู้ให้บริการการตรวจสอบสิทธิ์ที่กำหนดเอง (ฉันกำลังดิ้นรนกับความปลอดภัย/บทบาทรอบการตั้งค่านี้ในขณะนี้) docs.aws.amazon.com/lambda/latest/dg/ lambda-edge.html github .com/nzoschke/gofaas/blob/master/docs/ - person Squiggle; 18.10.2019