質問: 現在開発しているAPIサービスの認証をOAuth2.0で行っているのですが、 アクセスできるスコープによって2種類のgrant_typeを使い分けるのはOAuth2.0仕様上問題ないでしょうか。 使用したいgrant_typeは"password"と"client_credentials"です。 RFC 6749は一通り見たのですが、読み取ることができませんでした。 ご存知の方がいましたら、ご教示願いします。
回答: `grant_type`は、grant(認可)の方法の話なので、複数の`grant_type`を実装して動作させても問題になるようなことはないと思います。現にGoogleのAPIにOAuth2を使ってアクセスする場合、サーバーからの場合は"client_credentials"が使えるし、ブラウザーからの場は"Authorization Code"を使って`grant`できます。 PythonでOAuth2を実装する場合、自分で一から書くのは大変なので、`authlib`というライブラリーを使う場合が多いと思うのですが、`authlib`は、`ResourceOwnerPasswordGrant`にも`ClientCredentialsGrant`にも対応しています。後は、両方が問題無く動作するようにサーバーとクライアント側を実装したらいいだけのことだと思います。そうはいっても結構手間がかかるので「Firebase Authentication」のようなサービスを使う場合も多いのですが。。。