Sha*_* PC 10 postman amazon-cognito
我正在使用Amazon Cognito用户池进行登录。访问Web应用程序时,我将重定向到
https://<domain>.auth.<region>.amazoncognito.com/login?response_type=code&client_id=<client id>&redirect_uri=<callback> .
Run Code Online (Sandbox Code Playgroud)
使用池中的用户名/密码登录后,将使用代码作为查询参数将我重定向到回调URL。我可以用它来获取令牌。如何将其集成到邮递员中,以便可以将令牌用于即将到来的请求
yle*_*lev 23
伊尔。
感谢 Robert Jordan 的上述 postman OAuth2.0 配置帖子。
我将尝试在此处介绍整个 Cognito 用户池定义部分,以使其更容易。
好的,
打开 Cognito 控制台并按照以下步骤操作:
1)创建新的用户池
name: Test1
left panel menu->Attributes
Run Code Online (Sandbox Code Playgroud)
选择以下单选按钮:
o Email address or phone number - Users can use an email address or phone number as
their "username" to sign up and sign in.
o Allow email addresses
Run Code Online (Sandbox Code Playgroud)
和复选框:
[v] email
[v] name
Run Code Online (Sandbox Code Playgroud)
截屏:
按[创建池]按钮。(如果向导尚不可用 - 按左侧面板菜单上的 [查看详细信息] 选项)
2) 左侧面板菜单->App Clients
按:[添加应用程序客户端]
应用客户端名称:me1
清除所有复选框,但:
[v] Enable username password based authentication (ALLOW_USER_PASSWORD_AUTH)
Run Code Online (Sandbox Code Playgroud)
保持单选按钮不变:
o Enabled (Recommended)
Run Code Online (Sandbox Code Playgroud)
截屏:
按[创建应用程序客户端]
3) 复制并保留“App 客户端 ID”
这是一个类似于 5psjts111111117jclis0mu28q 的字符串格式
截屏:
4) 左侧面板菜单->App Client 设置
Enabled Identity Providers: [v]Select all
[v] Cognito User Pool
Run Code Online (Sandbox Code Playgroud)
回调 URL(s): 把 api gw url 或https://www.google.com/
OAuth 2.0
Allowed OAuth Flows
[v] Implicit grant
Allowed OAuth Scopes
[v] openid
Run Code Online (Sandbox Code Playgroud)
截屏:
5) 左侧面板菜单->域名
在前缀字段中放置一个字符串,例如:music123456789
使用“检查”按钮检查是否可用。
您现在的域名是:https : //music123456789.auth.us-east-1.amazoncognito.com
截屏:
6) 左侧面板菜单->用户和组
按[创建用户]
用户名(必填):Your.Mail@company.com
清除所有 [v] 复选框
临时密码:xx123456!
电子邮件:Your.Mail@company.com
7) 在邮递员
按新请求
进入“授权”选项卡
选择类型:OAuth 2.0
按【获取新的访问令牌】按钮并填写:
代币名称:myToken123
授予类型:从列表框中选择“隐式”
回调 URL:https : //www.google.com/
(如第 4 条或在 Cognito 控制台->应用程序集成->应用程序客户端设置中)
Auth URL:https :
//music123456789.auth.us-east-1.amazoncognito.com/login(如第5条+'/login'后缀,你在cognito控制台->应用集成->域名中定义的)
客户端 ID:5psjts343gm7gm7jclis0mu28q(应用程序客户端 ID - 如 3,
您在 cognito 控制台-> 常规设置-> 应用程序客户端中定义的内容)
将 Cognito 连接到 Okta IDP 时,配置应如下所示:
Rob*_*dan 16

现在,您可以登录到您的Cognito用户池并获得访问令牌!问题在于,一旦获得了访问令牌,它就无法在Postman中使用,因为Cognito希望它是裸露的,而Postman会自动在令牌中添加“ Bearer”:
令牌可以在cURL中使用:
curl -i -H "Authorization: dyJraWQiOiI1YVcwTUlqN1hBaHg4Yzh4Q3JNT2RsQjhZWjlCR3NQOE9BbkFlVFJtUklRPSIsImFsZyI6IlJTMjU2In0.eyJzdWIiOiI3YmEwZmMzOC01ZDcwkYS05MTI5ZTBmYTUzNTEiLCJ0b2tlbl91c2UiOiJhY2Nlc3MiLCJzY29wZSI6Imh0dHBzOlwvXC9hcGkubXk5MC5jb21cL3BvbGljZURlcGFydG1lbnRzLnJlYWQiLCJhdXRoX3RpbWUiOjE1NDA1OTIzMTYsImlzcyI6Imh0dHBzOlwvXC9jb2duaXRvLWlkcC51cy1lYXN0LTEuYW1hem9uYXdzLmNvbVwvdXMtZWFzdC0xX2xIbGo4NXpRYSIsImV4cCI6MTU0MDU5NTkxNiwiaWF0IjoxNTQwNTkyMzE2LCJ2ZXJzaW9uIjoyLCJqdGkiOiJhN2JiOWU2MC1kNmY1LTQ3ODYtODMwYi0xODdkZDZmYTZlODAiLCJjbGllbnRfaWQiOiI2MzhlYmZ1dTdiZDRkMXVkYnRzY2pxcnJncyIsInVzZXJuYW1lIjoicm9qbyJ9.O_GAxfFX3IQfLUu5Hxr05Wrk_2QDwNSL8tvDdEU0Dzs9d1XhQPafT6ney6yiGnKPOwsO8HhWdbT1QdDmByjuwQAURf1Da4Au7c-yhfgJcqWuHWZ4mledTSP8ukXqihMb4PoaDdU4JXyOdMLa50dBXVMgJNyXTpIulWOxFhiTW6DeQbnxNDk94cGNz_CTKCEqKStiloFZfLR7ndSrWqdOQ_SU__YV0RyKXZyK5yguv3nkUcI6cuKpbPVIZ5DNdpufbrtOLuZcC6HePBKrbTKjSZCt5-swy3YrwnY4ApTX7QUFzof6FylWaLA_KVP3Zv6ksSJ_IjBMFH1NRVHh4lbsOA" \
https://xxxxx.execute-api.us-east-1.amazonaws.com/v1/myresource/1234
对于那些想要从已弃用的“隐式”授予转向推荐的“授权”又名“授权代码”授予的人,您需要在 Postman 中拥有以下内容:
授权类型:授权代码(如果代码在传输过程中被截获,带有 PKCE 的授权代码将阻止其他人使用该代码,但是或者...您可能希望从让“授权代码”正常工作开始。)
回调 URL:https://oauth.pstmn.io/v1/callback(或者当您选中“使用浏览器授权”时 Postman 设置的任何值)
身份验证 URL:https://{app name you chose when creating the custom auth domain}.auth.{aws region}.amazoncognito.com/login例如https://myapp.auth.us-east-1.amazoncognito.com/login。您可以在 AWS 控制台 -> Cognito -> 用户池 -> 应用程序集成选项卡 -> 域部分 -> Cognito 域中找到它(如果您还没有自定义域,请使用操作下拉列表创建自定义域)。
访问令牌 URL:https://{app name}.auth.{aws region}.amazoncognito.com/oauth2/token例如https://myapp.auth.us-east-1.amazoncognito.com/oauth2/token。
客户端 ID:与“应用程序客户端”对应的客户端 ID(例如,Web 应用程序用户将通过 Cognito 进行身份验证才能使用),可在 AWS 控制台 -> Cognito -> 用户池 -> 应用程序集成选项卡 -> 应用程序客户端列表中找到部分 -> 应用程序客户端。
客户端秘密:可选的附加安全措施。切勿将其发送到 Web 应用程序,因为恶意用户可能会通过 Chrome 开发工具等提取客户端密钥。但是,您可以(并且应该)将客户端密钥与后端应用程序一起使用,例如支持前端 Web 应用程序的 API 服务。这是在 Cognito 用户池中创建应用程序客户端时必须在 AWS 中做出的决定,但不要担心 - 如果您改变主意或选择错误的设置,应用程序客户端很容易创建/删除/重新创建。
范围:OAuth 使用“范围”作为定义持有和使用访问令牌的应用程序(例如某些 Web 应用程序)可以代表其所使用的帐户的用户执行/访问的内容的方法。它类似于网络应用程序中的授权(例如,只有“admin”组中的用户可以访问设置页面),但它意味着针对用户元数据的授权,因此通常表现为应用程序有权访问的用户元数据,例如用户的日历或联系人或电话号码。OAuth 范围并不意味着取代应用程序的授权系统(例如 RBAC),因此如果您只是制作一些 Web 应用程序并且只需要 Cognito 处理用户注册、存储和重置用户密码等。您或多或少可以忽略 OAuth “范围”,尽管您可能应该将 Postman 中的“范围”值设置为“ openid email”之类的值 ”之类的值(范围由单个空格分隔,如果不请求“openid”,您就无法请求和获取“电子邮件”范围") 因此您至少可以在访问令牌中获取用户的电子邮件地址,以便与应用程序数据库中的“用户”表进行比较。在您的 Web 应用程序与实际第三方(而不是您自己的 Cognito 用户池)(例如 Facebook 或 Google)进行身份验证的情况下,范围更有意义并且变得更相关。也许您正在制作一个应用程序,将用户朋友的联系数据从 Facebook 同步到.. 我不知道,下载到您计算机上用于备份目的的 CSV 文件。在这种情况下,您希望从 Facebook 的 OAuth 服务器请求“好友列表”范围或 Facebook 决定调用该范围的任何内容。另一方面,如果您只需要 Facebook 作为一种允许用户轻松登录您的应用程序而无需创建帐户的方式,则不需要 Facbeook 的“好友列表”或任何其他范围(也许只是为您提供用户电子邮件地址的范围?)。
其他领域:
资料来源:
https://www.czetsuyatech.com/2021/01/aws-generate-cognito-access-token.html
https://aws.amazon.com/blogs/mobile/understanding-amazon-cognito-user-pool-oauth -2-0-grants/
https://api.slack.com/legacy/oauth-scopes
如果您的客户端支持,USER_PASSWORD_AUTH您可以使用客户端请求有效的不记名令牌aws。
read -s -p "Password: " && \
aws cognito-idp initiate-auth \
--client-id <client id> \
--auth-flow USER_PASSWORD_AUTH \
--auth-parameters "USERNAME=<username>,PASSWORD=$REPLY"
Run Code Online (Sandbox Code Playgroud)
可以将其添加到授权/类型:不记名令牌下的 Postman。
作为 Robert Jordan 和 ylev 的详尽解释的补充,我通过使用 id_token而不是Access Token使其工作。
在令牌详细信息页面中,复制 id_token 并将其手动添加到标头,不带 Bearer 前缀:

来源:https://github.com/postmanlabs/postman-app-support/issues/6987
小智 1
您想要实现的用例可以通过使用OAuth 2.0授权来实现。如果你能得到Auth URL/ Access Token URL、Client ID和Client Secret- 你应该能够做到。
以下是我们支持的各种授权类型的文档链接,包括上述授权类型 - https://www.getpostman.com/docs/v6/postman/sending_api_requests/authorization。
干杯。
| 归档时间: |
|
| 查看次数: |
8893 次 |
| 最近记录: |