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

相关文章

PHP应用中处理限流和API节流的最佳实践

《PHP应用中处理限流和API节流的最佳实践》限流和API节流对于确保Web应用程序的可靠性、安全性和可扩展性至关重要,本文将详细介绍PHP应用中处理限流和API节流的最佳实践,下面就来和小编一起学习... 目录限流的重要性在 php 中实施限流的最佳实践使用集中式存储进行状态管理(如 Redis)采用滑动

深入浅出Spring中的@Autowired自动注入的工作原理及实践应用

《深入浅出Spring中的@Autowired自动注入的工作原理及实践应用》在Spring框架的学习旅程中,@Autowired无疑是一个高频出现却又让初学者头疼的注解,它看似简单,却蕴含着Sprin... 目录深入浅出Spring中的@Autowired:自动注入的奥秘什么是依赖注入?@Autowired

JWT + 拦截器实现无状态登录系统

《JWT+拦截器实现无状态登录系统》JWT(JSONWebToken)提供了一种无状态的解决方案:用户登录后,服务器返回一个Token,后续请求携带该Token即可完成身份验证,无需服务器存储会话... 目录✅ 引言 一、JWT 是什么? 二、技术选型 三、项目结构 四、核心代码实现4.1 添加依赖(pom

PostgreSQL简介及实战应用

《PostgreSQL简介及实战应用》PostgreSQL是一种功能强大的开源关系型数据库管理系统,以其稳定性、高性能、扩展性和复杂查询能力在众多项目中得到广泛应用,本文将从基础概念讲起,逐步深入到高... 目录前言1. PostgreSQL基础1.1 PostgreSQL简介1.2 基础语法1.3 数据库

Python中的filter() 函数的工作原理及应用技巧

《Python中的filter()函数的工作原理及应用技巧》Python的filter()函数用于筛选序列元素,返回迭代器,适合函数式编程,相比列表推导式,内存更优,尤其适用于大数据集,结合lamb... 目录前言一、基本概念基本语法二、使用方式1. 使用 lambda 函数2. 使用普通函数3. 使用 N

Python中yield的用法和实际应用示例

《Python中yield的用法和实际应用示例》在Python中,yield关键字主要用于生成器函数(generatorfunctions)中,其目的是使函数能够像迭代器一样工作,即可以被遍历,但不会... 目录python中yield的用法详解一、引言二、yield的基本用法1、yield与生成器2、yi

Python多线程应用中的卡死问题优化方案指南

《Python多线程应用中的卡死问题优化方案指南》在利用Python语言开发某查询软件时,遇到了点击搜索按钮后软件卡死的问题,本文将简单分析一下出现的原因以及对应的优化方案,希望对大家有所帮助... 目录问题描述优化方案1. 网络请求优化2. 多线程架构优化3. 全局异常处理4. 配置管理优化优化效果1.

从基础到高阶详解Python多态实战应用指南

《从基础到高阶详解Python多态实战应用指南》这篇文章主要从基础到高阶为大家详细介绍Python中多态的相关应用与技巧,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录一、多态的本质:python的“鸭子类型”哲学二、多态的三大实战场景场景1:数据处理管道——统一处理不同数据格式

Spring Security重写AuthenticationManager实现账号密码登录或者手机号码登录

《SpringSecurity重写AuthenticationManager实现账号密码登录或者手机号码登录》本文主要介绍了SpringSecurity重写AuthenticationManage... 目录一、创建自定义认证提供者CustomAuthenticationProvider二、创建认证业务Us

Springboot项目登录校验功能实现

《Springboot项目登录校验功能实现》本文介绍了Web登录校验的重要性,对比了Cookie、Session和JWT三种会话技术,分析其优缺点,并讲解了过滤器与拦截器的统一拦截方案,推荐使用JWT... 目录引言一、登录校验的基本概念二、HTTP协议的无状态性三、会话跟android踪技术1. Cook