📑
Auth0を使用した認証について
Goでは、以下のパッケージを使うことで、APIサーバー内での処理が可能。
- JWKSの取得を行う。
- 取得した公開鍵はAPIサーバー内でキャッシュでき、定期的なリフレッシュの間隔やJWKS取得時のHTTPタイムアウト時間を設定可能。
- またdos対策で、rateパッケージと組み合わせて、JWKSの取得を⚪︎分間に1回など制限することができる。
jwks, err := keyfunc.NewDefaultOverrideCtx(context.Background(), []string{jwksURL}, keyfunc.Override{
RefreshInterval: time.Hour, // リフレッシュ間隔
HTTPTimeout: 10 * time.Second, // 取得のHTTPタイムアウト
RefreshUnknownKID: rate.NewLimiter( // 何回リフレッシュを許容するか
rate.Every(60*time.Second), 1,
),
})
-
ParseWithClaimsメソッドを使うことで署名の整合性をチェックする。
- 引数のkeyfuncに上記パッケージで取得したJWKSを渡すことができる。
- 標準のClaimの検証も行う。
- exp(Expiration Time)
- トークンの有効期限が現在時刻より前ならエラー。
- nbf(Not Before)
- トークンがまだ有効でない(未来時刻)ならエラー。
- iat(Issued At)
- 発行時刻が未来ならエラー。
- exp(Expiration Time)
Discussion