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

2024-05-16 00:12

本文主要是介绍8.2 GOOGLE(SAML应用)登录联携AWS用户池(Amazon Cognito),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

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

  • 目录
    • 一、参考资料
    • 二、创建和配置AWS用户池
      • 1. 创建用户池
      • 2. 在用户池中创建联合身份提供商
      • 3. 在用户池中创建应用程序集成
    • 三、创建和配置GOOGLE SAML应用
      • 1. 创建GOOGLE SAML应用
    • 四、登录测试

目录

业务流程:实现用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";// 获取完整的URLvar url = window.location.href;// alert(url);// 解析URL,获取查询字符串参数// 从 URL 中获取哈希部分(包含 #)const hash = url.split("#")[1];// 解析哈希部分中的参数const params = new URLSearchParams(hash);console.error(params);// 从参数中获取 access_tokenconst access_token = params.get("access_token");console.error("access_token", access_token);

在这里插入图片描述

这篇关于8.2 GOOGLE(SAML应用)登录联携AWS用户池(Amazon Cognito)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/993317

相关文章

JavaScript中的isTrusted属性及其应用场景详解

《JavaScript中的isTrusted属性及其应用场景详解》在现代Web开发中,JavaScript是构建交互式应用的核心语言,随着前端技术的不断发展,开发者需要处理越来越多的复杂场景,例如事件... 目录引言一、问题背景二、isTrusted 属性的来源与作用1. isTrusted 的定义2. 为

Python调用另一个py文件并传递参数常见的方法及其应用场景

《Python调用另一个py文件并传递参数常见的方法及其应用场景》:本文主要介绍在Python中调用另一个py文件并传递参数的几种常见方法,包括使用import语句、exec函数、subproce... 目录前言1. 使用import语句1.1 基本用法1.2 导入特定函数1.3 处理文件路径2. 使用ex

数据库oracle用户密码过期查询及解决方案

《数据库oracle用户密码过期查询及解决方案》:本文主要介绍如何处理ORACLE数据库用户密码过期和修改密码期限的问题,包括创建用户、赋予权限、修改密码、解锁用户和设置密码期限,文中通过代码介绍... 目录前言一、创建用户、赋予权限、修改密码、解锁用户和设置期限二、查询用户密码期限和过期后的修改1.查询用

将Python应用部署到生产环境的小技巧分享

《将Python应用部署到生产环境的小技巧分享》文章主要讲述了在将Python应用程序部署到生产环境之前,需要进行的准备工作和最佳实践,包括心态调整、代码审查、测试覆盖率提升、配置文件优化、日志记录完... 目录部署前夜:从开发到生产的心理准备与检查清单环境搭建:打造稳固的应用运行平台自动化流水线:让部署像

Linux中Curl参数详解实践应用

《Linux中Curl参数详解实践应用》在现代网络开发和运维工作中,curl命令是一个不可或缺的工具,它是一个利用URL语法在命令行下工作的文件传输工具,支持多种协议,如HTTP、HTTPS、FTP等... 目录引言一、基础请求参数1. -X 或 --request2. -d 或 --data3. -H 或

在Ubuntu上部署SpringBoot应用的操作步骤

《在Ubuntu上部署SpringBoot应用的操作步骤》随着云计算和容器化技术的普及,Linux服务器已成为部署Web应用程序的主流平台之一,Java作为一种跨平台的编程语言,具有广泛的应用场景,本... 目录一、部署准备二、安装 Java 环境1. 安装 JDK2. 验证 Java 安装三、安装 mys

Python中构建终端应用界面利器Blessed模块的使用

《Python中构建终端应用界面利器Blessed模块的使用》Blessed库作为一个轻量级且功能强大的解决方案,开始在开发者中赢得口碑,今天,我们就一起来探索一下它是如何让终端UI开发变得轻松而高... 目录一、安装与配置:简单、快速、无障碍二、基本功能:从彩色文本到动态交互1. 显示基本内容2. 创建链

python实现自动登录12306自动抢票功能

《python实现自动登录12306自动抢票功能》随着互联网技术的发展,越来越多的人选择通过网络平台购票,特别是在中国,12306作为官方火车票预订平台,承担了巨大的访问量,对于热门线路或者节假日出行... 目录一、遇到的问题?二、改进三、进阶–展望总结一、遇到的问题?1.url-正确的表头:就是首先ur

Node.js 中 http 模块的深度剖析与实战应用小结

《Node.js中http模块的深度剖析与实战应用小结》本文详细介绍了Node.js中的http模块,从创建HTTP服务器、处理请求与响应,到获取请求参数,每个环节都通过代码示例进行解析,旨在帮... 目录Node.js 中 http 模块的深度剖析与实战应用一、引言二、创建 HTTP 服务器:基石搭建(一

java中VO PO DTO POJO BO DO对象的应用场景及使用方式

《java中VOPODTOPOJOBODO对象的应用场景及使用方式》文章介绍了Java开发中常用的几种对象类型及其应用场景,包括VO、PO、DTO、POJO、BO和DO等,并通过示例说明了它... 目录Java中VO PO DTO POJO BO DO对象的应用VO (View Object) - 视图对象