Open14

auth0についてのメモ

tsubasatsubasa

idTokenはユーザーの認証情報とプロフィール情報を提供するためのトークンで、クライアントアプリで認証状態を確認するために使用される

accessTokenはapiへのアクセスを許可するためのトークンで、リソースサーバーへの認証と許可を行う

tsubasatsubasa

JWT→json web token

json内のkeyとvalueはJWTでは、クレームと呼ばれている

例えば、

{
  "iss": "io.exact.sample.jwt",
  "sub": "saumple",
  "exp": 1670085336,
  "email": "sample@extact.io",
  "groups": "member, admin"
}

がJWTではエンコードされたら

eyjcpkkcsakcmkdscmklmcklmkdsvlksdmvcknjvn kjdsmklmdsclkmalpsdioqwj8934rut94ijcsmclkmaslck

みたいな感じになる

tsubasatsubasa
  • app_matadata
    • ユーザーが書き換え不可のシステムのための情報
  • user_metadata
    • ユーザー書き換え可能な情報
tsubasatsubasa

flutterでは以下のパッケージで簡単に実装できる

auth0_flutterの方がokta社が提供している公式パッケージ
何かあった時のサポートを受けられるらしい、、
app_authの方はauth0を簡単にできるようにしたパッケージ、非公式?っぽい
けどこっちの方が人気
auth0をflutterで使用する場合の設定やメソッド呼び出し、メソッド使用時に設定しないといけないプロパティの量はauth0_flutterの方が楽だった

tsubasatsubasa

auth0_flutterのloginメソッドでauht0のログイン画面に行くが、signup画面を表示したい場合は以下の設定をする

parameters: { ''screen_hint': 'signup'}

パスワード再設定画面を初期表示にはできないっぽい

tsubasatsubasa

login成功時のredirect先にwebのurlを設定できるが、本来はアプリのリダイレクトURLを設定しjwtをもらえる
webの方を設定したらwebの方にjwtが渡るので、アプリではauth0の画面閉じてもjwtはもらえない

tsubasatsubasa

pkceという機能?を使用しているらしい
よくわからない

tsubasatsubasa

OAuth標準の仕様だとアクセストークンを第三者に盗まれてしまう恐れがある
これを防ぐのがPKCE
アプリをPKCE対応にすることでアクセストークンを盗まれることを防げるとのこと

PKCEはアクセストークンを盗まれることを防ぐOAuth2.0の標準仕様
Proof Key for Code Exchangeの略で、意訳すると「安全にコードをやりとりするための証明鍵」

tsubasatsubasa

認証

通信の相手が誰なのか、何なのかを特定すること

  • 認証にはemailやパスワードを使用する知識情報による認証
  • 顔や指紋などを使用する生体情報による認証
  • SMSを使う所持情報を使う認証

がある

認可

特定の対象物(リソース)を利用可能にする権限を与えること

認証と認可を別々に行うことで全てのユーザーでなく限られたユーザーにリソースへのアクセス権限が与えることができる
柔軟な対応ができ、セキュリティの向上につながる

tsubasatsubasa

OAuth

OAuthは認可をを行うプロトコル
アクセストークンを使用してユーザーがリソースサーバーにアクセスしていいかを検証する
アクセストークンは認可に使われるもので、どのようなアクセス権限を持っているかを示すことができる

https://solution.kamome-e.com/blog/archive/blog-auth-20221108