Apollo Server basi c аутентификация за исключением одной мутации - PullRequest
0 голосов
/ 19 марта 2020

У меня есть реализация Apollo Server, которая взаимодействует с несколькими нашими внутренними API. Все операции ограничены для publi c, и для получения токена необходима мутация входа в систему. Тем не менее, мутация входа в систему не обязательно должна иметь токен в заголовках, так как она будет точкой входа для всех клиентов GralhQL.

const server = new ApolloServer({
    typeDefs,
    resolvers,
    context: async ({
        event,
        context
    }: {
        event: APIGatewayProxyEvent;
        context: any;
    }) => {
        const { Authorization, OAuthId, OAuthSecret } = event.headers;
        // if (!Authorization || !OAuthId || !OAuthSecret) {
        //     throw new AuthenticationError('Unauthorized');
        // }
        const session = await SessionStore.get(Authorization);
        // if (!session) {
        //     throw new AuthenticationError('Unauthorized');
        // }

        return {
            Authorization,
            OAuthId,
            OAuthSecret,
            session
        };
    },
    dataSources,
    playground: true
});

Моя проблема в том, что если я включу приведенный выше код с комментариями, он заблокирует все поступает запрос, и никто не сможет войти в систему (у меня есть loginResolver, отвечающий за аутентификацию пользователей и установку токенов / сессий)

Теперь, если я переместу эту аутентификацию, проверьте logi c в все распознаватели не масштабируемы, так как у нас наверняка будет 100 или более распознавателей.

В любом случае я могу внести в белый список мою указанную мутацию c и все другие операции должны go через эту проверку аутентификации ?

Я использую apollo-server-lambda.

Я открыт для любого масштабируемого решения.

Спасибо,

...