AppSyn c множественная авторизация - PullRequest
0 голосов
/ 13 февраля 2020

Я использую множественную авторизацию с AppSyn c (ключ API и OID C).

У меня есть запрос с именем 'getStudent', и по умолчанию аутентификация - API KEY, а OID C - дополнительный режим аутентификации.

Цель состоит в том, чтобы 'getStudent' был доступен для API KEY, однако, с OID C, только владелец должен иметь возможность извлечь свою собственную запись. Чтобы добиться этого, я отредактировал шаблон сопоставления преобразователей для getStudent:

#if( $ctx.error )
$util.error($ctx.error.message, $ctx.error.type, $ctx.result)
#else
    #if($ctx.result.id == $ctx.identity.claims.get("studentid"))
        $util.toJson($ctx.result)
    #else
        $util.unauthorized()
    #end
#end

Однако, хотя это работает для OID C, API KEY больше не работает. Я не смог найти какие-либо переменные или способ выполнить 'ЕСЛИ КЛЮЧЕВОЙ РЕЖИМ API ОБНАРУЖЕН ВСЕМ, ЧТО ВСЕ ДАННЫЕ БУДУТ ВОЗВРАЩЕНЫ'.

Это известное ограничение или я что-то упускаю?

С благодарностью,

1 Ответ

0 голосов
/ 27 февраля 2020

Если вы используете более одного типа авторизации в AppSyn c, то для всех будет работать только один тип по умолчанию. Все остальные типы авторизации должны быть явно определены для каждого результата запроса и мутации с использованием соответствующей директивы, такой как:

type Query {
    getPost(id: ID): Post
    getAllPosts(): [Post]
    @aws_api_key. // Assuming default was OpenID Connect then this is necessary for API Key mode to run Query.
}

Вот хорошая статья из AWS блога.

...