当前位置:  开发笔记 > 编程语言 > 正文

如何访问Cognito用户帐户的组?

如何解决《如何访问Cognito用户帐户的组?》经验,为你挑选了3个好方法。

在AWS Cognito中,您可以将用户添加到组(首次创建组之后).用户可以属于一个或多个组.

使用JavaScipt SDK(https://github.com/aws/amazon-cognito-identity-js),有没有办法读取分配的组?会aws-sdk提供访问权限amazon-cognito-identity-js吗?



1> 小智..:

如果您只需要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": ""
}

希望这可以帮助.



2> jspeaks..:

我最初期望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']);
        });
    }
});



3> Jeff Bailey..:

此API确实存在 - AdminListGroupsForUser.顾名思义,您没有看到它的原因是API目前仅在管理员基础上可用.Cognito在移动SDK中不包含管理API.它将包含在AWS SDK /服务器端SDK中,但值得注意的是,此API确实需要开发人员凭据,所有管理API也是如此.


这还算公平.作为管理员API,您必须拥有开发者信誉,因此作为客户端应用程序,这是一个冒险的想法.我可以将此作为添加用户级版本的功能请求!
推荐阅读
喜生-Da
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有