GraphQLサーバでの認証を正しく処理する方法は?GraphQLサーバでの認証
クエリ/変更要求のAuthorizationヘッダーにJWTトークンを渡しても問題ありませんか?
GraphQL仕様から何かを使用する必要がありますか?
ステートレスソリューションが望ましいです。
ありがとうございました。
GraphQLサーバでの認証を正しく処理する方法は?GraphQLサーバでの認証
クエリ/変更要求のAuthorizationヘッダーにJWTトークンを渡しても問題ありませんか?
GraphQL仕様から何かを使用する必要がありますか?
ステートレスソリューションが望ましいです。
ありがとうございました。
私はいつか同じことをやろうとしていましたが、 ですが、明らかに認証はGraphQLが達成しようとしている範囲外です(Githubの会話を参照)。
しかし、セッションでそれを処理するthisなどのソリューションがあります。
express-graphqlとすると、次のようになります。
import graphQLHTTP from 'express-graphql'
app.use(`/graphql`, [aValidationFunction, graphQLHTTP(options)])
function aValidationFunction(req, res, next) {
const { authorization } = req.headers
// Do your validation here by using redis or whatever
if (validUser) {
return next()
} else {
return res.status(403)
}
}
GraphQLコンシューマがwebappかmobileappかによって異なります。
webappの場合は、ほとんどの一般的なWebフレームワークがこれをサポートしているので、セッションクッキーベースの認証を推奨し、CSRF保護も取得します。
モバイルアプリケーションの場合は、JWTが必要です。ログインレスポンスからクッキーヘッダーを手動で取得し、次のリクエストにこの「Cookie」を入れても問題はありませんでしたが、一部のプロキシサーバーがこの「Cookie」を取り除いてリクエストを認証しないままにしてしまうという問題がありました。あなたが言ったように、認証されたすべてのリクエスト(GraphQLリクエスト)にJWTを含めることは、方法です。
[Authentication in Relay&GraphQL]の可能な複製(http://stackoverflow.com/questions/38618385/authentication-in-relay-graphql) –