saitamau-maximum / auth

Aggregated Authentication Platform of Maximum
https://auth.maximum.vc
MIT License
0 stars 0 forks source link

[WIP] [OAuth] Authorization Endpoint の作成 #27

Open a01sa01to opened 21 hours ago

a01sa01to commented 21 hours ago

[!important] この Issue はまだ書き途中です。 仕様変更の可能性があります。 完成するまで実装はしないことをおすすめします。

OAuth 2.0 において、リソース所有者 (Resource Owner; ユーザーのこと) がサービスに対して「この情報を与えてもいいですよ」という認可 (Authorization) を与えるエンドポイントが必要です。 OAuth 2.0 仕様では Authorization Endpoint と呼ばれています。 この Authorization Endpoint を作成しましょう。


エンドポイントの場所・許可するメソッド

受け取るパラメータ

GET ならクエリパラメータとして、 POST ならリクエストボディとして受け取る

チェックすること

上から順に行うことを想定しています

ここまででおかしいものがあれば、 400 Bad Request レスポンスを返す。 以下、 redirect_uri パラメータが存在していない場合、その値は DB に登録されている唯 1 つの Callback URL で上書きしたとして話を進める。

なお、パラメータに state が存在する場合、リダイレクト時に state=パラメータの値 も付与すること

応答

デザインは後回しでよいです ヘッダには Cache-Control: no-store, Pragma: no-cache を指定する

auth_token について

client_id, redirect_uri, state, scope, time を環境変数 PRIVKEY に格納されている秘密鍵でハッシュを取り、その値を token として使用する。 ハッシュは ECDSA P-512 にすると @saitamau-maximum/auth/internal のやつが使えるのでうれしいかも? (特に強制はしません)

ハッシュの取り方はこの 4 つの値を持っていればなんでもいいと思っていて、例えば

client_id: 値
redirect_uri: 値
state: 値
scope: 値
time: 値

という文字列をそのままハッシュ関数に入れるとか