javascript - 放大 (JavaScript) - SAML 登录
问题描述
我在 Amplify 中使用 AD SAML 登录苦苦挣扎了几天。
我看过一些教程,但我想要的流程不同。我没有任何按钮可以让用户单击以触发 Auth 序列(并打开弹出窗口)。
我们的用户正在进入一个链接:
https://....amazoncognito.com/login?response_type=token&client_id=...&redirect_uri=...
这会自动将它们重定向到前端。
http://localhost:3000/#access_token=...&id_token=...&token_type=Bearer&expires_in=600
我可以从查询参数中获取access_token
、id_token
和。token_type
expires_in
我可以使用这些令牌成功调用我们的后端..
但我正在努力的是制作 Amplify “登录”序列..所以它会识别用户并创建 localStorage 值..所以例如在调用Auth.currentSession()
它时会返回令牌。
我试过使用Auth.federatedSignIn(..)
但无济于事。我什至不确定它是否支持这个流程。
这是我尝试过的:
Auth.federatedSignIn(
'test-ad',
{
token: idToken,
expires_at: expiresIn,
},
{
name: "test-user",
},
);
但我不断得到
未处理的拒绝 (NotAuthorizedException):登录令牌无效。发行者与 providerName 不匹配
这很奇怪,因为providerName
我正在传递('test-ad')与我在 Cognito SAMLProvider Name
字段中配置的相同(在 Cognito -> 用户池 -> 联合 -> 身份提供者 -> SAML -> 新提供者中)
我的 Amplify 配置正确
Amplify.configure({
Auth: {
identityPoolId: ...,
region: ...,
userPoolId: ...,
userPoolWebClientId: ...
}
});
我可以看到 Chromenetwork
调用具有正确的有效负载:
{
"IdentityPoolId":"us-east-x:...",
"Logins":{
"test-ad":"...idToken..."
}
}
所以 - 如何使用令牌验证到 Amplify?有可能吗?
任何帮助将不胜感激!
解决方案
推荐阅读
- angular - Angular + firebase:从服务文件调用函数时.then()不起作用
- python - 如何修复 ValueError:要解包的值太多(预期为 2)?
- python - 更新多维 Numpy 数组 Python
- next.js - 在 next.js 中添加带有 css 变量的内联样式
- amazon-web-services - Lambda 调用 Lambda 导致 InvalidSignatureException
- python - flask-sqlalchemy 中有没有办法删除或创建单个表?
- flutter - 如何使我的可滑动容器与我的列表项中的容器高度相同?
- html - what's the purpose of adding ngModel attribute alone with no value?
- c# - 在 C# 中以窗口形式打开现有 PDF
- python - 使用异步数据加快加载时间(Google API 和 Kivy 的 UrlRequests)