現在、webAPIの束に接続するSPAアプリケーションを開発中です。これらのAPIでは、ユーザがログインしている必要があるため、主にIdentityServerを使用して、Openid ConectとOAuth2の例を取り上げました。外部ログインページにリダイレクトせずにSPA認証を行うことは可能ですか
SPAの理由から、access_tokensの取得に暗黙的な許可を使用する必要があります。トークンのリフレッシュは、隠しiframeを使用して認証サーバーに接続して処理されます。
私がこのアプローチから理解していることは、あなたのaccess_tokenを更新することです。セッションは認証サービスで維持されます。非表示のiframeが認証サーバーに送られ、セッションはまだアクティブで、新しいaccess_tokenが提供されます。
(UX REASOSNの場合を除き)私のユーザーが認証サーバーページにリダイレクトされ、資格情報を提供する必要があるという点を除いて、私にとっては格好いいものです。
SPAアプリケーションで認証サーバーに資格情報を送信し、access_tokenを取得してから、非表示のiframeを使用して更新して静かに更新することはできません(わかりました。分または毎時間..)。
セキュリティ上の理由でこれが受け入れられない場合は、理由を説明してください。
oidc-client-jsライブラリを使用する場合、ImplicitFlowを使用する必要はありませんか?私が理解するように、この種のフローを使用するには、IdentityServerでホストされているログインページにユーザーをリダイレクトする必要があります。私はAngularアプリケーション内でユーザー/パスワードを入力できるような動作を実現しようとしていました。 –
さらに、oidc-client-jsで暗黙のフローを使用する必要があります。ユーザーが保護されたSPAに初めてアクセスしようとすると、ユーザーに認証が求められます。その後のアクセストークンの有効期限のために、ライブラリはサイレントアクセストークン更新呼び出しを開始する(すなわち、現在のトークンが期限切れになる前に新しいアクセストークンを数秒/分要求する)。そのため、アクセストークンの有効期限が切れるたびにユーザーに認証を求められません。ユーザー資格情報/クライアント資格情報のSPAへの格納は、公開されているため安全ではありません – Karthik