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

相关文章

Ubuntu 24.04启用root图形登录的操作流程

《Ubuntu24.04启用root图形登录的操作流程》Ubuntu默认禁用root账户的图形与SSH登录,这是为了安全,但在某些场景你可能需要直接用root登录GNOME桌面,本文以Ubuntu2... 目录一、前言二、准备工作三、设置 root 密码四、启用图形界面 root 登录1. 修改 GDM 配

Redis中Stream详解及应用小结

《Redis中Stream详解及应用小结》RedisStreams是Redis5.0引入的新功能,提供了一种类似于传统消息队列的机制,但具有更高的灵活性和可扩展性,本文给大家介绍Redis中Strea... 目录1. Redis Stream 概述2. Redis Stream 的基本操作2.1. XADD

nginx 负载均衡配置及如何解决重复登录问题

《nginx负载均衡配置及如何解决重复登录问题》文章详解Nginx源码安装与Docker部署,介绍四层/七层代理区别及负载均衡策略,通过ip_hash解决重复登录问题,对nginx负载均衡配置及如何... 目录一:源码安装:1.配置编译参数2.编译3.编译安装 二,四层代理和七层代理区别1.二者混合使用举例

JSONArray在Java中的应用操作实例

《JSONArray在Java中的应用操作实例》JSONArray是org.json库用于处理JSON数组的类,可将Java对象(Map/List)转换为JSON格式,提供增删改查等操作,适用于前后端... 目录1. jsONArray定义与功能1.1 JSONArray概念阐释1.1.1 什么是JSONA

nginx -t、nginx -s stop 和 nginx -s reload 命令的详细解析(结合应用场景)

《nginx-t、nginx-sstop和nginx-sreload命令的详细解析(结合应用场景)》本文解析Nginx的-t、-sstop、-sreload命令,分别用于配置语法检... 以下是关于 nginx -t、nginx -s stop 和 nginx -s reload 命令的详细解析,结合实际应

PostgreSQL的扩展dict_int应用案例解析

《PostgreSQL的扩展dict_int应用案例解析》dict_int扩展为PostgreSQL提供了专业的整数文本处理能力,特别适合需要精确处理数字内容的搜索场景,本文给大家介绍PostgreS... 目录PostgreSQL的扩展dict_int一、扩展概述二、核心功能三、安装与启用四、字典配置方法

Python中re模块结合正则表达式的实际应用案例

《Python中re模块结合正则表达式的实际应用案例》Python中的re模块是用于处理正则表达式的强大工具,正则表达式是一种用来匹配字符串的模式,它可以在文本中搜索和匹配特定的字符串模式,这篇文章主... 目录前言re模块常用函数一、查看文本中是否包含 A 或 B 字符串二、替换多个关键词为统一格式三、提

Java MQTT实战应用

《JavaMQTT实战应用》本文详解MQTT协议,涵盖其发布/订阅机制、低功耗高效特性、三种服务质量等级(QoS0/1/2),以及客户端、代理、主题的核心概念,最后提供Linux部署教程、Sprin... 目录一、MQTT协议二、MQTT优点三、三种服务质量等级四、客户端、代理、主题1. 客户端(Clien

CSS3打造的现代交互式登录界面详细实现过程

《CSS3打造的现代交互式登录界面详细实现过程》本文介绍CSS3和jQuery在登录界面设计中的应用,涵盖动画、选择器、自定义字体及盒模型技术,提升界面美观与交互性,同时优化性能和可访问性,感兴趣的朋... 目录1. css3用户登录界面设计概述1.1 用户界面设计的重要性1.2 CSS3的新特性与优势1.

SpringSecurity显示用户账号已被锁定的原因及解决方案

《SpringSecurity显示用户账号已被锁定的原因及解决方案》SpringSecurity中用户账号被锁定问题源于UserDetails接口方法返回值错误,解决方案是修正isAccountNon... 目录SpringSecurity显示用户账号已被锁定的解决方案1.问题出现前的工作2.问题出现原因各