Google を介して OpenID Connect で認証するために、WebAPI バックエンドを使用して SPA (Angular) アプリをアップグレード中です。理想的には、ハイブリッド フローを使用したいと考えています。
Google サインイン ボタンをクリックした後、ブラウザーが Google にリダイレクトし、同意画面を表示して、コードと ID トークンを含む応答をアプリに送り返すところまで来ました。公開されているシナリオのほとんどは、認証コードが返されたときに通知を起動するように MVC アプリを構成する方法を示しています。
app.UseOpenIdConnectAuthentication(new OpenIdConnectAuthenticationOptions
{
ClientId = "",
MetadataAddress = "https://accounts.google.com/.well-known/openid-configuration",
RedirectUri = "https://localhost:44300/authentication",
Scope = "openid profile",
Notifications = new OpenIdConnectAuthenticationNotifications
{
AuthorizationCodeReceived = async n =>
{
私たちの場合、それは決して発生しません。その理由は、応答がアプリのサーバー側のエンドポイントではなく、SPA に返されるためだと思います。ここでの次のステップは何ですか?
- クライアントでコードを受け取り、Ajax リクエストを Web API レイヤーに送信してから、それをアクセス トークンと交換しますか? アクセス トークンを取得したら、js から API 呼び出しを行うときにトークンが有効であると認識されるように、ユーザーがサインインしていることをどのように伝えますか。
- Google に応答を Web API レイヤーに送信するように指示し、アクセス トークンのコードを交換して、最後にアクセス トークンを含むハッシュ フラグメントを含むリダイレクト応答を送信しますか? その場合、通知ハンドラは起動しますか?
どちらの場合でも、コードを交換するために OpenID ミドルウェアの何かを活用できますか? 投稿リクエストはそれほど複雑ではありませんが、可能であれば既存のライブラリを活用するとよいでしょう。