「[[マイクロソフト系技術情報 Wiki>http://techinfoofmicrosofttech.osscons.jp/]]」は、「[[Open棟梁Project>https://github.com/OpenTouryoProject/]]」,「[[OSSコンソーシアム .NET開発基盤部会>https://www.osscons.jp/dotNetDevelopmentInfrastructure/]]」によって運営されています。

-[[戻る>OAuth PKCE]]

* 目次 [#d22d27a9]
#contents

*概要 [#v6a8d036]
[[Implicit非推奨>UserAgentでOAuth2のTokenを取得するベスト・プラクティス#g8b68319]]に伴い、[[SPA>Single-page application]]で[[PKCE>OAuth PKCE]]する場合のプロファイル。

*詳細 [#n4168d13]

**特徴 [#x41303e1]
-カスタムURLスキームを使用しない~
「response_mode=fragment」で認可リクエストを行う。

-従って、基本的には、ネイティブでやってた[[PKCE>OAuth PKCE]]を、~
「response_mode=fragment」で、まんま[[SPA>Single-page application]]で実装すれば良い。

※ IdPが「response_mode=fragment」に対応している必要がある。

**実装 [#gd7ca851]

***認証 [#jad079a9]
-[[PKCE>OAuth PKCE]]なので、[[SPA>Single-page application]]からのTokenリクエストでも、client_secretは不要。

-JavaScriptから基本認証の付加は難しいので、~
AuthZ(N)側が [[client_secret_post>OpenID Connect - クライアント認証#b718e26d]]  をサポートしていると吉。~
(そもそも、client_secret無しの基本認証ってのもアレ)

***フロー [#o3d5f3a3]
基本的に、ネイティブ・アプリケーションと同様に、~
フロントエンド・ホスト側のエンドポインドは利用しなくていい。

-認可リクエストはフロントエンド・ホストからリダイレクトで開始するのだと考えていたが、
--しかし、Routerを定義したSPAでは、自サイトにHTTPリクエストが飛ばず、
--ネイティブ・アプリケーションと同様に、Public Clientから直接リクエストした。

-リダイレクト・エンドポイントを経由してCodeを受け取るのだと考えていたが、
--しかし、Routerを定義したSPAでは、自サイトにHTTPリクエストが飛ばず、
--カスタムURLスキームと同様、直接、Public Clientに戻ってCodeを取得する。

※ Router(URLによるページ遷移)を定義した[[SPA>Single-page application]]では、~
 自サイトにHTTPリクエストが飛ばなくなる。と言うのがポイント。

**余談 [#n6ad6d9c]
バックエンドからclient_secret付きでTokenリクエストにするものと思っていたが、

-[[以下>#jf4fadcd]]を確認すると、client_secretは不要らしい([[SPA>Single-page application]]上からTokenリクエスト可能)。

-一方で、[[Hybrid Flow>OpenID Connect#l565139a]]のcodeは~
バックエンドからclient_secret付きでTokenリクエスト(code_verifier無いから)。

*参考 [#jf4fadcd]

**Okta Developer [#rf705fb6]
-Implement the OAuth 2.0 Authorization Code with PKCE Flow~
https://developer.okta.com/blog/2019/08/22/okta-authjs-pkce
--Replace Implicit Flow with PKCE~
https://developer.okta.com/blog/2019/08/22/okta-authjs-pkce#replace-implicit-flow-with-pkce

**Auth0 [#ocd39e9c]
-Authorization Code Flow with Proof Key for Code Exchange (PKCE)~
https://auth0.com/docs/flows/concepts/auth-code-pkce

-Execute an Authorization Code Grant Flow with PKCE~
https://auth0.com/docs/api-auth/tutorials/authorization-code-grant-pkce

----
Tags: [[:IT国際標準]], [[:認証基盤]], [[:クレームベース認証]], [[:OAuth]]

トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS