遇到一個很蛋疼的問題。。。作為一個新手我實在是無能為力了,希望高手們幫幫忙
是這樣的,我用Cognito建立了賬戶系統, 然后也配置了identity pool,這樣就可以在cognito中申請賬號,然后在dataset里面存一些資料。
然后我想利用Cognito里面的賬號登錄alexa ,實作alexa smart skill。
到目前為止,登錄已經搞定了。用aws sdk (js)也能拿到dataset里面的資料。但是問題來了。。。
Logins = {};
Logins['cognito-idp.' + AWSCognito.config.region + '.amazonaws.com/' + poolData.UserPoolId] = token;
AWS.config.region = AWSCognito.config.region;
AWS.config.credentials = new AWS.CognitoIdentityCredentials({
IdentityPoolId : identityPoolId,
region: AWSCognito.config.region,
Logins : Logins
});
利用這個地方初始化credentials的時候。。。那個token要的是id_token, 但是alexa skill只能把access token傳過來。
這兩個token都是JWT格式的。我用它一個直接做網頁login的demo把這兩個token都抓來決議,發現長得還挺像。
access token +
{
"kid": "9dOMRdWtmeCnopfHvFz6kIDwkITdFTsdA+IkYbtABSQ=",
"alg": "RS256"
}
{
"sub": "3123888e-76df-48b2-87e4-d7c9b65e32ba",
"token_use": "access",
"scope": "aws.cognito.signin.user.admin",
"iss": "https://cognito-idp.us-east-1.amazonaws.com/us-east-1_S5kbwuSkN",
"exp": 1499227860,
"iat": 1499224260,
"jti": "ea9ad8a6-f3c3-4f13-920e-65dff62e9901",
"client_id": "31imp79ppkscn5if53nei6tqvb",
"username": "[email protected]"
}
idToken +
{
"kid": "Y55SEAf1CCzVkWkYXMfxlNluyiLVfOyc8r4vYnzp8VM=",
"alg": "RS256"
}
{
"sub": "3123888e-76df-48b2-87e4-d7c9b65e32ba",
"aud": "31imp79ppkscn5if53nei6tqvb",
"email_verified": true,
"token_use": "id",
"auth_time": 1499224260,
"iss": "https://cognito-idp.us-east-1.amazonaws.com/us-east-1_S5kbwuSkN",
"cognito:username": "[email protected]",
"exp": 1499227860,
"iat": 1499224260,
"email": "[email protected]"
}
下面是從alexa skill登陸之后通過lambda拿到的access token
"accessToken":.."
{
"kid": "9dOMRdWtmeCnopfHvFz6kIDwkITdFTsdA+IkYbtABSQ=",
"alg": "RS256"
}
{
"sub": "3123888e-76df-48b2-87e4-d7c9b65e32ba",
"token_use": "access",
"scope": "aws.cognito.signin.user.admin",
"iss": "https://cognito-idp.us-east-1.amazonaws.com/us-east-1_S5kbwuSkN",
"exp": 1499152959,
"iat": 1499149359,
"version": 2,
"jti": "f77a82b2-3eaf-42ca-90fc-e0228f934ea2",
"client_id": "6raclfd4r92uj78m1hr8rfcrmv",
"username": "[email protected]"
}
從這個上面看,alexa 的account link應該是正確的,他給我的token也是正確的,,,,但是這東西咋用啊。。。aws的檔案只說了用ID token來實作cognito identity pool的訪問,,,沒有說 這個access token 咋用。。。。求大俠幫忙
uj5u.com熱心網友回復:
能力有限,幫不了你,抱歉。
uj5u.com熱心網友回復:
哎。。。。惆悵,,,還沒有錢開AWS付費支持。。。。。uj5u.com熱心網友回復:
兩個用法一樣,通過 token_use 來區分是id還是access。才看到,希望還有幫助~~轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/50559.html
標籤:AWS
上一篇:實體秘鑰檔案丟了 怎么辦
下一篇:docker 啟動容器報錯Activation of org.freedesktop.systemd1 timed out
