在没有托管UI的情况下使用AWS的Cognito,给定用户名和密码我希望在不使用托管的UI的情况下获得授权代码授权.
这可能吗?我正在编写自己的注册,登录表单,但似乎无法找到有关此主题的文档.
目前我可以使用AWS.CognitoIdentityServiceProvider和initiateAuth函数来交换令牌的用户名密码,但我不想在重定向URL中返回这些令牌,我宁愿返回可以交换令牌的授权代码授权.
那么我如何使用initiateAuth接收授权代码授权而不是令牌.
更新:使用下面的正确答案,这就是我最终在节点中进行的操作.
const base64url = require('base64url');
const crypto = require('crypto');
const request = require('request');
const querystring = require ('querystring');
function generateCodeVerifierHash(code_verifier) {
return crypto.createHmac('SHA256', code_verifier)
.digest('base64');
}
function generateCodeVerifier() {
var text = "";
var possible = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789._`-";
for (var i = 0; i < 64; i++)
text += possible.charAt(Math.floor(Math.random() * possible.length));
return base64url.encode(text);
}
var CLIENT_ID="Your Client Id";
var CLIENT_SECRET="Your Client Secret";
var RESPONSE_TYPE="code";
var REDIRECT_URI= encodeURIComponent("Your Redirect Url");
var SCOPE="openid";
var AUTH_DOMAIN= "Your Cognito Auth …Run Code Online (Sandbox Code Playgroud)