auth0についてのメモ

idTokenはユーザーの認証情報とプロフィール情報を提供するためのトークンで、クライアントアプリで認証状態を確認するために使用される
accessTokenはapiへのアクセスを許可するためのトークンで、リソースサーバーへの認証と許可を行う

issuerは発行者

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
みたいな感じになる

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

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

auth0_flutterのloginメソッドでauht0のログイン画面に行くが、signup画面を表示したい場合は以下の設定をする
parameters: { ''screen_hint': 'signup'}
パスワード再設定画面を初期表示にはできないっぽい

jwtにmetadataを含みたいときは、auth0の管理画面からユーザーに追加できる

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

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

OAuth標準の仕様だとアクセストークンを第三者に盗まれてしまう恐れがある
これを防ぐのがPKCE
アプリをPKCE対応にすることでアクセストークンを盗まれることを防げるとのこと
PKCEはアクセストークンを盗まれることを防ぐOAuth2.0の標準仕様
Proof Key for Code Exchangeの略で、意訳すると「安全にコードをやりとりするための証明鍵」

認証
通信の相手が誰なのか、何なのかを特定すること
- 認証にはemailやパスワードを使用する知識情報による認証
- 顔や指紋などを使用する生体情報による認証
- SMSを使う所持情報を使う認証
がある
認可
特定の対象物(リソース)を利用可能にする権限を与えること
認証と認可を別々に行うことで全てのユーザーでなく限られたユーザーにリソースへのアクセス権限が与えることができる
柔軟な対応ができ、セキュリティの向上につながる

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

認可サーバーはwebサーバの一種

webviewで他の認証エンドポイントを使用してのauth0の認証はしてはいけないとのこと