🙅‍♂️

もうOAuth 2.0のResource Owner Password Credentials Grantは使うなって話

2020/10/13に公開

ritouです。

なんの話か

どこに書いてあるんや!って聞かれたのでメモ代わりに書いておきます。

なぜダメなのか

OAuth 2.0 Security Best Current Practice 2.4. Resource Owner Password Credentials Grant

The resource owner password credentials grant MUST NOT be used. This grant type insecurely exposes the credentials of the resource owner to the client. Even if the client is benign, this results in an increased attack surface (credentials can leak in more places than just the AS) and users are trained to enter their credentials in places other than the AS.

ROPCはClientにクレデンシャルを提示します。
1st Partyな場合などは信用できるから!と使われていたりしますが、ASのみがクレデンシャルを扱うAuthZ Code Grantなどに比べると漏洩リスクなどもあるし攻撃対象を増やすことにもつながります。

例えばリスト攻撃とかにも使われる可能性があります。Webのエンドポイントだけでも対策大変なのにAPIでこれやられると結構辛いと思いますよ。

Furthermore, adapting the resource owner password credentials grant to two-factor authentication, authentication with cryptographic credentials (cf. WebCrypto, WebAuthn), and authentication processes that require multiple steps can be hard or impossible.

パスワード認証しか使えない。そりゃそうです。
MFAとか、WebAuthnとかに対応しようと思うと拡張が必要ですがWGではその辺りは議論されていませんし、独自でやってるとこはあるかもしれませんがそれは標準化されたものから外れた、つまり独自です(語彙)。

とりあえずこの辺で。

で、現行のユースケースとセキュリティプラクティスで練り直している OAuth 2.1 ではもう出てきませんよと。

OAuth 2.1

The Resource Owner Password Credentials grant is omitted from this specification

以上です。

参考

Discussion