【问题标题】:AWS CloudFormation Cognito Identity Provider (SAML)AWS CloudFormation Cognito 身份提供商 (SAML)
【发布时间】:2020-04-25 16:52:49
【问题描述】:

我正在尝试借助 https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-cognito-userpoolidentityprovider.html 的文档创建一个 Cognito 身份提供程序。这是一个 sn-p 示例,其中 FederationMetadata.xml 与 CF 模板定义位于同一文件夹中。

AWSTemplateFormatVersion: 2010-09-09
Description: Identity Provider

Resources: 
  CognitoUserPoolAIdProvider:
    Type: "AWS::Cognito::UserPoolIdentityProvider"
    Properties:
      AttributeMapping:
        email: http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress
      IdpIdentifiers: []
      ProviderDetails:
        IDPSignout: 'false'
        MetadataFile: './FederationMetadata.xml'
        SLORedirectBindingURI: https://<IP of ADFS>/adfs/ls/
        SSORedirectBindingURI: https://<IP of ADFS>/adfs/ls/
      ProviderName: MyIdProvider
      ProviderType: SAML
      UserPoolId: us_abcdef123

在尝试运行时,我收到错误

Invalid XML (Service: AWSCognitoIdentityProviderService; Status Code: 400; Error Code: InvalidParameterException; Request ID: c047641b-7c69-4944-b4e4-e110cf8c2605)

我看到运行时没有提供文件内容:

{
    "ProviderName": "MyIdProvider",
    "UserPoolId": "us_abcdef123",
    "AttributeMapping": {
        "email": "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress"
    },
    "ProviderDetails": {
        "MetadataFile": "./FederationMetadata.xml",
        "SSORedirectBindingURI": "https://<IP>/adfs/ls/",
        "IDPSignout": "false",
        "SLORedirectBindingURI": "https://<IP>/adfs/ls/"
    },
    "ProviderType": "SAML",
    "IdpIdentifiers": []
}

问题:我应该如何引用 CF 模板中的 FederationMetadata.xml 文件?此外,粘贴 XML 文件的内容可以正常工作,但我想将元数据内容完全外部化到一个文件中。

【问题讨论】:

    标签: json amazon-web-services amazon-cloudformation amazon-cognito


    【解决方案1】:

    MetadataFile 的输入是 XML 的内容,而不是文件路径。所以你有一些替代选择:

    1. 切换到使用MetadataURL 接受元数据文件的公共 URL

    2. 或者如果您使用AWS CLI 来CFN 部署,您可以使用MetadataFile 作为CFN 作为参数并将XML 内容传递给部署脚本,例如:

        metadata=$(cat FederationMetadata.xml)
    
        aws cloudformation deploy --stack-name YOUR_STACK --parameter-overrides MetadataFile="${metadata}"
    

    您的 CFN 将被使用:MetadataFile: Ref !MetadataFile

    【讨论】:

    • 我知道 MetadataURL 属性,但第二个选项非常适合我。
    猜你喜欢
    • 1970-01-01
    • 2020-07-06
    • 2019-03-30
    • 2018-08-29
    • 2017-01-05
    • 2020-08-14
    • 2019-03-04
    • 2018-10-08
    • 2021-10-26
    相关资源
    最近更新 更多