8.2 GOOGLE(SAML应用)登录联携AWS用户池(Amazon Cognito)

目录

业务流程:实现用AWS提供的谷歌登录UI,以谷歌用户身份登录后,谷歌用户信息自动存储到AWS用户池中,并且能获取AWS认证用的code或access_token,登陆成功后重定向进入自定义系统页面。

一、参考资料

AWS: 通过 SAML 为 Amazon Web Services 配置 SSO

GOOGLE: 设置自定义 SAML 应用程序

GOOGLE: 为用户配置文件创建自定义属性

GOOGLE: SAML 应用程序错误消息

Configure Google as Authentication Provider using the SAML2 Protocol

chatgpt.

二、创建和配置AWS用户池

1. 创建用户池

Amazon Cognito ユーザープール

在这里插入图片描述

其余步骤省略,下一步下一步即可。

2. 在用户池中创建联合身份提供商

在这里插入图片描述

在这里插入图片描述

说明:

  1. 身份提供商类型要选择:SAML
  2. 上传元数据文档来源:admin用户的谷歌程序控制台
    (这步在下面会介绍,先跳过,在GOOGLE SAML应用创建配置完后再上传即可)
  3. 属性映射配置:用谷歌SAML程序属性映射到AWS用户池属性,这里谷歌SAML属性中的NameID指代是谷歌邮箱格式,所以用NameID属性映射email,其余属性映射关系可参照具体业务追加。

下记图文解释

元数据文档来源:
在这里插入图片描述


元数据文档中体现的映射关系:在这里插入图片描述


<md:NameIDFormat> urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress </md:NameIDFormat>


这段标签 md:NameIDFormat 是 SAML (Security Assertion Markup Language) 中的一个元素,它用于定义 SAML 断言中的 NameID 的格式。以下是它的含义解释:

md:NameIDFormat:这是一个 SAML 元素,用于指定 SAML 断言中的 NameID 的格式。

urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress:这是一个 URI 标识符,表示 NameID 的格式是电子邮件地址(emailAddress)。

在 SAML 断言中,NameID 用于标识认证的主体(即用户)。该元素指定了在 SAML 断言中使用的 NameID 的格式,这里的 urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress 指示 NameID 将采用电子邮件地址的格式。

这个标签告诉 SAML 系统,在 SAML 断言中,NameID 将作为电子邮件地址提供给相关系统,以标识用户。例如,当一个用户通过 SAML 单点登录到一个服务时,服务将从 SAML 断言中提取 NameID,并将其视为用户的电子邮件地址。

3. 在用户池中创建应用程序集成

①创建域

在这里插入图片描述

这个Cognito 域URL在后面创建配置GOOGLE SAML应用 会用到。

②创建应用程序客户端

在这里插入图片描述

应用程序客户端中详细配置参照

在这里插入图片描述


三、创建和配置GOOGLE SAML应用

admin用户 GOOGLE控制台

1. 创建GOOGLE SAML应用

注意: 不是应用管理者,没有此(添加自定义SAML应用程序)选项

在这里插入图片描述

接下来,参照这篇创建SAML应用的手顺
Configure Google as Authentication Provider using the SAML2 Protocol


在这里插入图片描述


在这里插入图片描述


在这里插入图片描述

**注意:**下载完IDP数据源,上传到AWS SAML身份提供商的配置项(元数据文档)中。

在这里插入图片描述


在这里插入图片描述


在这里插入图片描述


在这里插入图片描述


在这里插入图片描述


以下呈现:DEMO配置完后的各配置项

https://admin.google.com/u/2/ac/apps/unified

在这里插入图片描述


在这里插入图片描述


在这里插入图片描述


在这里插入图片描述

说明:
在这里插入图片描述


  1. ACS URL: AWS Cognito 域 + /saml2/idpresponse

在这里插入图片描述


  1. Entity ID: urn:amazon:cognito:sp: + AWS 用户池ID

在这里插入图片描述


在这里插入图片描述


四、登录测试


在这里插入图片描述


在这里插入图片描述


谷歌用户登录成功后自动跳转到AWS应用程序客户端设置的允许的回调 URL画面,并返回认证code参数,
AWS用户池自动追加登录成功的谷歌用户
在这里插入图片描述

在这里插入图片描述


在这里插入图片描述


补充说明:认证code参数换成 获取认证access_token参数

在这里插入图片描述

得到URL:


在这里插入图片描述


  1. code 换成 token

  2. ** & amp; ** 换成 &

得到URL:


在这里插入图片描述


access_token 取得

在这里插入图片描述

JavaScript 代码参照:

    // window.open("https://www.baidu.com", "_target");
    window.location.href =
      "https://你的自定义.auth.ap-northeast-1.amazoncognito.com/login?client_id=你的client_id&response_type=token&scope=aws.cognito.signin.user.admin+email+openid+phone&redirect_uri=你的重定向URL";

    // 获取完整的URL
    var url = window.location.href;
    // alert(url);

    // 解析URL,获取查询字符串参数

    // 从 URL 中获取哈希部分(包含 #)
    const hash = url.split("#")[1];

    // 解析哈希部分中的参数
    const params = new URLSearchParams(hash);
    console.error(params);

    // 从参数中获取 access_token
    const access_token = params.get("access_token");
    console.error("access_token", access_token);
    

在这里插入图片描述

相关推荐

  1. php原生简单应用实例(用户登录

    2024-05-16 06:18:10       11 阅读
  2. 用户登录问题——登录

    2024-05-16 06:18:10       18 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-05-16 06:18:10       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-05-16 06:18:10       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-05-16 06:18:10       18 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-05-16 06:18:10       20 阅读

热门阅读

  1. Linux系统安装MongoDB流程

    2024-05-16 06:18:10       11 阅读
  2. mysql入门与mongoDB入门

    2024-05-16 06:18:10       12 阅读
  3. Docker学习(10)搭建kubernetes集群

    2024-05-16 06:18:10       12 阅读
  4. 基于C++的OpenCV支持的KCF目标跟踪

    2024-05-16 06:18:10       14 阅读
  5. MongoDB聚合运算符:$zip

    2024-05-16 06:18:10       9 阅读
  6. Jetpack Compose 初探

    2024-05-16 06:18:10       15 阅读
  7. 在ubuntu安装Docker容器

    2024-05-16 06:18:10       10 阅读
  8. WebApp 使用post-css实现移动端适配

    2024-05-16 06:18:10       14 阅读
  9. 15. 三数之和

    2024-05-16 06:18:10       11 阅读
  10. docker版MySQL5.7重置root密码并授权localhost访问

    2024-05-16 06:18:10       10 阅读