OAuth2.0
久しぶりにOAuth2.0を使うことがあったので仕組みについて調べてみました。
しかもネイティブアプリからは初めてだったのでどの値をクライアントに渡してよくて、どれがダメなのか、その理由も含めて理解しておかないと正しい実装ができないなと思った次第です。
まとめるにあたって下の記事がわかりやすかったのでおすすめです。
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は公開してはダメです。
英語ですが下記リンクが分かりやすいです。
参考資料
髙妻智一
最新記事 by 髙妻智一 (全て見る)
- Polkadot(Substrate)のアドレスとトランザクションについて - 2023-03-09
- 【無料公開】「Goで始めるBitcoin」3章 Bitcoinノードとの通信 技術書典8 - 2020-03-08
- エンジニアがゼロから技術ブログを書くための方法をまとめました - 2019-05-25
コメントを残す