在AWS Cognito中,您可以将用户添加到组(首次创建组之后).用户可以属于一个或多个组.
使用JavaScipt SDK(https://github.com/aws/amazon-cognito-identity-js),有没有办法读取分配的组?会aws-sdk
提供访问权限amazon-cognito-identity-js
吗?
如果您只需要Cognito UserPools组,则Authenticated User是其成员,而不是进行单独的API调用,该数据将在您进行身份验证时收到的idToken.jwtToken中进行编码.
这对于angular/react/etc中的客户端呈现/访问决策很有用.应用.
请参阅此示例中的"cognito:groups"数组声明已解码的idToken.jwtToken:
{ "sub": "a18626f5-a011-454a-b4c2-6969b3155c24", "cognito:groups": [ "uw-app-administrator", "uw-app-user" ], "email_verified": true, "iss": "https://cognito-idp..amazonaws.com/ ", "cognito:username": " ", "given_name": " ", "aud": " ", "token_use": "id", "auth_time": 1493918449, "nickname": "Bubbles", "exp": 1493922049, "iat": 1493918449, "email": " " }
希望这可以帮助.
我最初期望Cognito JavaScript API提供一个简单的属性或方法来返回组列表,但我得出的结论是它被隐藏在一个令牌中,因此必须了解jwt.一旦建立了Cognito用户并检索了会话,就可以在IdToken中使用组数组.
var jwtDecode = require('jwt-decode'); var AmazonCognitoIdentity = require('amazon-cognito-identity-js'); var CognitoUserPool = AmazonCognitoIdentity.CognitoUserPool; var CognitoUser = AmazonCognitoIdentity.CognitoUser; var userPool = new CognitoUserPool({UserPoolId:'', ClientId:''"); ... app.get('/app', function(req, res){ var cognitoUser = userPool.getCurrentUser(); if(cognitoUser != null){ cognitoUser.getSession(function(err, session) { if (err) { console.error(err); return; } console.log('session validity: ' + session.isValid()); var sessionIdInfo = jwtDecode(session.getIdToken().jwtToken); console.log(sessionIdInfo['cognito:groups']); }); } });
此API确实存在 - AdminListGroupsForUser.顾名思义,您没有看到它的原因是API目前仅在管理员基础上可用.Cognito在移动SDK中不包含管理API.它将包含在AWS SDK /服务器端SDK中,但值得注意的是,此API确实需要开发人员凭据,所有管理API也是如此.