私はgraphqlサブスクリプションでapollo-serverを作成しました。私はフロントエンドで出版物を受け取ることができます。すばらしいです!graphql-サブスクリプションとマイクロサービスによる認証(認証ではない!)パターン
私が今やってみたいのは、の許可を受けたのユーザーにのみ公開しているので、何らかのロジック/テストが必要です。しかしどこでどのように?私が見てきたすべての例と事柄は、盲目的に赤いサーバーからのメッセージを受信し、それをクライアントに戻すことを伴います。どのユーザーがログインしているかはテストできますが、今は何ですか?個々のマイクロサービスは、認証/ユーザーサービスと対話し、それに基づいて許可されたアクションを決定します。問題ない。しかし、どのように私は間違ったユーザーに赤ちゃんの放送を止めるのですか?すべてのapollo-serverは、redisからのメッセージをリッスンします - 検証しません。
私が実際に考えることができる唯一のことは、すべてのブロードキャストにいくつかの種類のアクセス許可オブジェクトフィールドがあり、それを認証サービスに対して検証するためにgraphqlを使用することです。正しいとは思わない。私はマイクロサービスでの私の認証をしたい。正しい方向に私を指し示すものはすばらしいでしょう。
これは役に立ちますが、これが私の目的です。すべての通知/メッセージ/イベントソースは、メッセージの宛先ユーザーIDまたはnullを指定します。 nodejsサーバー(すべてのクライアントが接続され、プロキシーとして動作するサーバー)は、そのユーザーIDで認証されたクライアントにのみメッセージを送信します。ユーザIDが「ヌル」の場合、メッセージはブロードキャストされる。メッセージを複数のユーザーに送信する必要がある場合は、メッセージが乗算されます。私はWebクライアント(HTML/JS)、PHPバックエンド、Nodejsをサーバー送信エンドポイントとして使用します。 –
多くの助けになります!ありがとう。だから私の場合は、アポロサーバーはプロキシなので、各マイクロサービスはメッセージを送信する前に承認チェックを行う必要がありますか?私はそれがプロキシにユーザーサービスの依存関係があることを意味しますか? – antirealm