OAuth2.0のClientIDとClientSecretについて




OAuth2.0

久しぶりにOAuth2.0を使うことがあったので仕組みについて調べてみました。

しかもネイティブアプリからは初めてだったのでどの値をクライアントに渡してよくて、どれがダメなのか、その理由も含めて理解しておかないと正しい実装ができないなと思った次第です。

まとめるにあたって下の記事がわかりやすかったのでおすすめです。

OAuth.com

OAuth2.0には大きく分けて2つあるっぽい

何が違うかと言うと、ClientSecretを使うかどうかみたいですね。これはサービスの適正に合わせて選んでください。

基本的にClientSecretを使うAuthorization Code Flowがベターな選択かと思います。

ClientSecretを使わない場合(Implicit Flow)

ClientIDを使って認可するためのリクエストを実行するとレスポンスとしてアクセストークンが返ってきます。

この場合、refresh tokenなどはないのでアクセストークンが無効になったら再認可しなければいけません。

ClientSecretを使う場合(Authorization Code Flow)

ClientIDを使って認可したあと、Aythorization Codeが返ってくるのでClientIDとClientSecretを使ってaccess tokenとrefresh tokenを取得します。

access tokenの期限が切れたら、refresh tokenを使って新しい有効なaccess tokenを取得します。

ClientIDとClientSecretとは

ClientIDはユーザからの認可リクエスト時にどのサービス(クライアント)に対して認可するか識別するためのものです。

ClientSecretは認可元とサードパーティしか知らないものになるので、クライアントから使うとはやめましょう。

結論として、ClientIDは公開して大丈夫で、ClientSecretは公開してはダメです。

英語ですが下記リンクが分かりやすいです。

The Client ID and Secret

参考資料

 

The following two tabs change content below.

高妻智一

2013年CyberAgent新卒入社 スマホゲームを作る子会社に所属し、サーバーサイドのエンジニアを担当。2年目の終わりから新規子会社の立ち上げに参加し、サーバーサイドのエンジニアリーダーとしてサービースのリリースから運用までを担当。 2018年仮想通貨のスマホウォレットを提供するGinco Incにブロックチェーンエンジニアとして入社。






よく読まれている関連記事はこちら



コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です