我真的很难在Cognito生成的JWT令牌中添加自定义角色或组。我正在Cognito中使用Pre-Token生成触发器来执行Lambda。我在响应中添加了“ groupOverrideDetails”对象。这是我的最终输出:
"response": {
"claimsOverrideDetails": {
"claimsToAddOrOverride": {
"custom_attribute_key2": "attribute_value2",
"custom_attribute_key": "attribute_value"
}
},
"groupOverrideDetails": {
"groupsToOverride": [
"developers"
],
"iamRolesToOverride": [
"S3_Access_Admin"
],
"preferredRole": "S3_Access_Admin"
}
}
但是在我的JWT令牌中,我看不到任何上述角色或组。
答案 0 :(得分:0)
我不知道要对您在声明中添加的组和角色进行什么验证,但是我看到的唯一一件事是您需要将groupOverrideDetails
嵌套在claimsOverrideDetails
内。这是我可以开始工作的代码段。
role_arns = ...
event['response'] = {
'claimsOverrideDetails': {
'groupOverrideDetails': {
# we don't need to modify the groups in our case
'groupsToOverride': request['groupConfiguration']['groupsToOverride'],
# this will set the claim 'cognito:roles'
'iamRolesToOverride': role_arns,
# this will set the claim 'cognito:preferredRole'
'preferredRole': role_arns[0],
},
}
return event
以下stackoverflow问题帮助了我: AWS Cognito - create groups from ADFS as Cognito Groups
供以后参考,这是AWS文档。向下滚动到标题为Pre Token Generation Example: Modify the User's Group Membership
的部分
https://docs.aws.amazon.com/cognito/latest/developerguide/user-pool-lambda-pre-token-generation.html
答案 1 :(得分:0)
如果您尝试添加自定义属性以访问令牌,则不支持注入自定义属性以访问令牌。通常,预令牌生成触发器会将它们添加到ID令牌中。
注意:如果您在前端使用放大功能,则可以获得ID令牌
Amplify.Auth.currentSession()).getAccessToken().getJwtToken()