モーテルによるアポロクライアント認証
7609 ワード
それを伴う認証とオーバーヘッドを管理することは、メンテナンスとセキュリティに関して騒ぎでありえます.だからこそ、Googleやマイクロソフトなどのアイデンティティプロバイダを使用して、ユーザーがアプリケーションにログインし、保護されたルートに移動できるように簡単です.
私の会社では、我々は反応でフロントエンドを書いて、状態管理のためにアポロクライアントを使用して、我々のGraphSQL APIと通信するために、我々はマイクロソフトIdentityプラットホームからトークンを得るためにMSAL(マイクロソフト認定図書館)を活用する方法を探しました.
MSALは、Apolloクライアントがリクエストで送信するアクセストークンを更新するために、リフレッシュトークンを使用します.したがって、キャッシュされたリフレッシュトークンを使用してアクセストークンを取得しようとするのは、サイレント取得メカニズムを持っています.失敗した場合、例外をスローします.これは、ユーザーが再びログインした後に、別のアクセストークンを取得するために、マイクロソフトのログインフレームとユーザーとの対話を必要とすることを意味します.
さらにADOなしでコードを続けましょう.
我々は、反応プロジェクトで以下のパッケージを必要とするつもりです.
┣ アプリ
┃ ┣ フック
┃ ┃ ┗ USequeryUser.js
┃ ┣ サービス
┃ ┃ ┣ アポロ
┃ ┃ ┃ ┗ インデックス.js
┃ ┃ ┗ 認証
┃ ┃ ┣ Auth設定.js
┃ ┃ ┗ インデックス.js
┃ ┣ 表示
┃ ┃ ┗ インデックス.js
┃ ┗ インデックス.js
┣ 共有
┃ ┗ ヘルパー
┃ ┗ アディクト
┃ ┃ ┗ インデックス.js
┣ アプリ.テスト.js
┣ インデックス.CSS
┣ インデックス.js
┗ テストテスト.js
プロジェクトのGithubレポのリンクを入れますが、ここではトークンを取得する関数を見てみましょう.
MSALをインスタンス化し、必要な設定をロードした後、フックを使用してライブラリの関数を呼び出します.
第一に
プロセスが失敗すると、マイクロソフトのログインエンドポイントにリダイレクトを開始することによってユーザーの相互作用を促すことができます
そのためには、
Githubレポへのリンクです.
アポロクライアント
私の会社では、我々は反応でフロントエンドを書いて、状態管理のためにアポロクライアントを使用して、我々のGraphSQL APIと通信するために、我々はマイクロソフトIdentityプラットホームからトークンを得るためにMSAL(マイクロソフト認定図書館)を活用する方法を探しました.
MSALは、Apolloクライアントがリクエストで送信するアクセストークンを更新するために、リフレッシュトークンを使用します.したがって、キャッシュされたリフレッシュトークンを使用してアクセストークンを取得しようとするのは、サイレント取得メカニズムを持っています.失敗した場合、例外をスローします.これは、ユーザーが再びログインした後に、別のアクセストークンを取得するために、マイクロソフトのログインフレームとユーザーとの対話を必要とすることを意味します.
さらにADOなしでコードを続けましょう.
我々は、反応プロジェクトで以下のパッケージを必要とするつもりです.
yarn add @apollo/client @azure/msal-browser @azure/msal-react
src/┣ アプリ
┃ ┣ フック
┃ ┃ ┗ USequeryUser.js
┃ ┣ サービス
┃ ┃ ┣ アポロ
┃ ┃ ┃ ┗ インデックス.js
┃ ┃ ┗ 認証
┃ ┃ ┣ Auth設定.js
┃ ┃ ┗ インデックス.js
┃ ┣ 表示
┃ ┃ ┗ インデックス.js
┃ ┗ インデックス.js
┣ 共有
┃ ┗ ヘルパー
┃ ┗ アディクト
┃ ┃ ┗ インデックス.js
┣ アプリ.テスト.js
┣ インデックス.CSS
┣ インデックス.js
┗ テストテスト.js
プロジェクトのGithubレポのリンクを入れますが、ここではトークンを取得する関数を見てみましょう.
MSALをインスタンス化し、必要な設定をロードした後、フックを使用してライブラリの関数を呼び出します.
第一に
AsyncTokenLookup
関数はキャッシュされたユーザが存在するかどうかをチェックしますacquireTokenSilent
msalから.プロセスが失敗すると、マイクロソフトのログインエンドポイントにリダイレクトを開始することによってユーザーの相互作用を促すことができます
acquireTokenRedirect
またはポップアップを使用してポップアップを開くacquireTokenPopup
. const AsyncTokenLookup = async () => {
const accounts = await instance.getAllAccounts();
const account = get(accounts, "[0]");
if (account && inProgress === "none") {
try {
const result = await instance.acquireTokenSilent({
...loginSilentRequest,
account,
});
return result.accessToken;
} catch (err) {
if (err instanceof InteractionRequiredAuthError) {
// fallback to interaction when silent call fails
return instance.acquireTokenRedirect(loginRequest);
}
}
} else if (!account && inProgress === "none") {
return instance.acquireTokenRedirect(loginRequest);
}
};
さもなければ、静かな取得が成功するなら、Acceptヘッダーでアポロによって送られるアクセストークンを返します.そのためには、
setContext
関数は@apollo/client
パッケージが認証ヘッダーにトークンを注入するために. const withToken = setContext(async (_, { headers }) => {
const token = await AsyncTokenLookup();
return {
headers: {
...headers,
Authorization: token ? `Bearer ${token}` : null,
},
};
});
その後、新しいアポロクライアントHTTPLINKとwithtokenトークンを作成します. const httpLink = createHttpLink({
uri: process.env.REACT_APP_BACKEND_URI,
});
const client = new ApolloClient({
link: from([withToken, httpLink]),
cache: new InMemoryCache(),
});
この例では、1つの組織ディレクトリのみでアカウントを有効にし、個人のマイクロソフトアカウントではないことに注意してください.Githubレポへのリンクです.
大阪工大 / アポロクライアント
Boilerplateを取得するには、Apolloクライアント認証を使用してmsalを使用して
アポロクライアント
Boilerplateを取得するには、Apolloクライアント認証を使用してmsalを使用して
View on GitHub
Reference
この問題について(モーテルによるアポロクライアント認証), 我々は、より多くの情報をここで見つけました
https://dev.to/othpwn/apollo-client-authentication-with-msal-3nhb
テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol
Reference
この問題について(モーテルによるアポロクライアント認証), 我々は、より多くの情報をここで見つけました https://dev.to/othpwn/apollo-client-authentication-with-msal-3nhbテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol