#amazon-web-services #openid-connect #openid #aws-appsync
#amazon-веб-сервисы #openid-connect #openid #aws-appsync
Вопрос:
Я настроил AppSync на использование OIDC / OpenID Connect в качестве авторизатора и успешно получил токен на клиенте. Я не использую cognito. Сейчас я пытаюсь выяснить следующее:
- Я использую apollo sdk для взаимодействия с моим API AppSync GraphQL, как мне передать этот токен open id от клиента к нему? Я предполагаю, что это должен быть какой-то заголовок, но я не могу найти никаких документов о том, что AppSync ожидает от него.
- Как только я передам токен, как мне получить доступ к его заявкам в AppSync / AppSync resolver после его проверки и извлечения данных токена?
Ответ №1:
- Передайте токен Firebase при создании клиента:
const client = new AWSAppSyncClient({
url: ...,
region: ...,
auth: {
type: 'OPENID_CONNECT',
jwtToken: async() => token // Token from Firebase
}
})
- Утверждения из токена доступны в
$context.identity
. Некоторые из этих утверждений являются стандартными утверждениями (заданными OpenID Connect), а другие являются пользовательскими утверждениями (уникальными для вашего проекта). Форма$context.identity
будет похожа на ту, которая была передана, если бы вы использовали AWS Cognito вместо Firebase:
{
"sub" : "...", // standard claim - straight from the token
"issuer" : "...", // standard claim - straight from the token
"username" : "...",
"claims" : { ... }, // custom claims from the token
"sourceIp" : ["x.x.x.x"],
"defaultAuthStrategy" : "..."
}
Как вы можете видеть выше, sub
и iss
это два стандартных утверждения, которые отображаются непосредственно из токена. Все остальные утверждения из токена отображаются как пользовательские утверждения. Их можно получить через $context.identity.claims.get()
Затем вы можете использовать эти утверждения в распознавателе и действовать с ними стандартным образом.