はじめに RFC7636 PKCE(Proof Key for Code Exchange by OAuth Public Clients)は認可コード横取り攻撃の対策(authorization code interception attack)として策定された仕様です。 また、PKCEは認可コード横取り攻撃にかかわらず、OAuth2.0におけるCSRFの対策としても機能します。 なお、stateによるCSRF対策ではクライアントが検証を実施するのに対して、PKCEによるCSRF対策では認可サーバーが検証を実施するという違いがあります。(PKCEを利用した場合でも、クライアントが固定値などの脆弱なcode_challenge、code_verifierを利用するとCSRFに対して脆弱になるためクライアントに対策の責務がないわけではありません) PKCEはスマートフォンアプリなどのPubl
![Authorization Code Flow with PKCE Clientの実装(Node.js) - Qiita](https://cdn-ak-scissors.b.st-hatena.com/image/square/f35d7f72955909f264f3300e9a26749bde4e724d/height=288;version=1;width=512/https%3A%2F%2Fqiita-user-contents.imgix.net%2Fhttps%253A%252F%252Fcdn.qiita.com%252Fassets%252Fpublic%252Fadvent-calendar-ogp-background-7940cd1c8db80a7ec40711d90f43539e.jpg%3Fixlib%3Drb-4.0.0%26w%3D1200%26mark64%3DaHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjAuMCZ3PTk3MiZoPTM3OCZ0eHQ9QXV0aG9yaXphdGlvbiUyMENvZGUlMjBGbG93JTIwd2l0aCUyMFBLQ0UlMjBDbGllbnQlRTMlODElQUUlRTUlQUUlOUYlRTglQTMlODUlRUYlQkMlODhOb2RlLmpzJUVGJUJDJTg5JnR4dC1jb2xvcj0lMjMzQTNDM0MmdHh0LWZvbnQ9SGlyYWdpbm8lMjBTYW5zJTIwVzYmdHh0LXNpemU9NTYmdHh0LWFsaWduPWxlZnQlMkN0b3Amcz1kNDA3NzA3ZDNjYjRlNWQ2ZWQ2ZWNiY2ViYmY4NzUzYQ%26mark-x%3D142%26mark-y%3D100%26blend64%3DaHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjAuMCZoPTc2Jnc9OTcyJnR4dD0lNDBrZzByMCZ0eHQtY29sb3I9JTIzM0EzQzNDJnR4dC1mb250PUhpcmFnaW5vJTIwU2FucyUyMFc2JnR4dC1zaXplPTM2JnR4dC1hbGlnbj1sZWZ0JTJDdG9wJnM9ZmM3ZDQwNDAyZjUzNjcwNjkxYjgzMGI0MGU0MmYxNDQ%26blend-x%3D142%26blend-y%3D504%26blend-mode%3Dnormal%26s%3D0360fa8c48b212bfd7a380d2d3b3efda)