3 回答
TA贡献1848条经验 获得超10个赞
让我们以 Facebook 为例。当您使用 Cognito UI 时,Facebook 会为您的用户将 OAuth 令牌直接交给 Cognito。Cognito 会做一些事情,比如检查用户是否已经存在,并在需要时创建一个新用户,然后向您的应用程序发送一个 AWS OAuth 令牌。
现在,如果您想要在自己的网站上使用 Facebook 按钮,则身份验证会以不同的方式进行。您必须自己与 Facebook 协商,为用户取回 OAuth 令牌,然后将访问令牌交给 Cognito。Cognito 会做它的事情并给你一个 AWS OAuth 令牌。
TA贡献1943条经验 获得超7个赞
您的应用程序要求已经超过了使用千篇一律的 Cognito 登录流程的程度。
FB.login(function (response) {
// Check if the user logged in successfully.
if (response.authResponse) {
console.log('You are now logged in.');
// Add the Facebook access token to the Cognito credentials login map.
AWS.config.credentials = new AWS.CognitoIdentityCredentials({
IdentityPoolId: 'IDENTITY_POOL_ID',
Logins: {
'graph.facebook.com': response.authResponse.accessToken
}
});
// Obtain AWS credentials
AWS.config.credentials.get(function(){
// Access AWS resources here.
});
} else {
console.log('There was a problem logging you in.');
}
});
然后像这样获取用户:
var data = { UserPoolId : 'us-east-1_Iqc12345',
ClientId : '12345du353sm7khjj1q'
};
var userPool = new AmazonCognitoIdentity.CognitoUserPool(data);
var cognitoUser = userPool.getCurrentUser();
if (cognitoUser != null) {
cognitoUser.getSession(function(err, session) {
if (err) {
alert(err);
return;
}
console.log('session validity: ' + session.isValid());
});
}
在这里您可以看到一个名为 AdminInitiateAuth 的函数。还有将用户附加到身份提供者的功能。因此,虽然使用 JS SDK 可能是最简单的,但在我看来,这是将 Web 应用程序与 Cognito 集成的解决方案。您可以清楚地处理所有身份验证流程、令牌管理、创建 api 以登录、注销等。服务器端使用 GO SDK
TA贡献1854条经验 获得超8个赞
现在可以使用identity_providerprop in oauth2/authorizerequest
在我的代码中看起来像
const query = stringify({
response_type: 'code',
redirect_uri: tokenRedirectUri,
state: stateEncoded,
client_id: clientId,
identity_provider: platform,
})
return `https://auth.${domainName}/oauth2/authorize?${query}`
//其他 OIDC 提供商等platform在哪里GoogleFacebook
那只是url,你需要自己制作按钮,但它会直接重定向到提供者同意
- 3 回答
- 0 关注
- 143 浏览
添加回答
举报