Я понял, что есть claims
объект в event.requestContext.authorizer.claims
от Lambda в соответствии с AWS API Gateway Do c.
- Поэтому дополнительные
/userInfo
вызов не нужен. - Я добавил 2 Правила Auth0 , чтобы объединить роль пользователя с
user.app_metadata
и объектом claims
.
Код пример для # 2:
function assignRoleToAppMetadata (user, context, callback) {
const ManagementClient = require('auth0@2.19.0').ManagementClient
const management = new ManagementClient({
domain: '{YOUR_ACCOUNT}.auth0.com',
clientId: '{YOUR_NON_INTERACTIVE_CLIENT_ID}',
clientSecret: '{YOUR_NON_INTERACTIVE_CLIENT_SECRET}'
})
const params = { id: user.user_id }
management.getUserRoles(params)
.then(roles => {
user.app_metadata = user.app_metadata || {}
user.app_metadata.roles = roles
return auth0.users.updateAppMetadata(user.user_id, user.app_metadata)
})
.then(() => callback(null, user, context))
.catch(err => {
console.error(err.message)
callback(null, user, context)
})
}
Кроме того, следующее правило прикрепило информацию о роли к /userInfo
:
function(user, context, callback) {
const namespace = 'https://{YOUR_ACCOUNT}.auth0.com/'
context.idToken[namespace + 'roles'] = user.app_metadata.roles
callback(null, user, context)
}