JavaScriptを有効にしてください

JwtのAudienceについて諸々

 ·  ☕ 2 分で読めます

仕事で少しAuth0を触っている。
今の会社では BackEnd に Go を採用しているので、jwt の検証には Auth0 が提供しているgo-jwt-middlewareを利用しているのだが、Audience の検証の挙動が少し意図しない動きになっていた。

1
2
3
4
5
6
7
// Set up the validator.
	jwtValidator, err := validator.New(
		keyFunc,
		validator.HS256,
		"https://<issuer-url>/",
		[]string{"<audience>"},
	)

こんな感じで、複数の audience を設定できるようになっているものの、現状の validation はクライアント側の jwt が指定した audience を全て持っている場合、いわゆる all match の場合のみ検証が通る実装になっている。

個人的には any match で検証が通ると思っていたので、少し驚いた。

go-jwt-middleware は jwt の検証に内部では go-jose を利用しており、同様の問題に困っている方が issue を上げていたが、放置されている。(RFC も見たものの、any match と all match どちらが正しいか読み取れなかった。)

go-jose は square 社が管理している OSS だが、メインメンテナの方が square に現在所属していないようで、次期リリースバージョンの v3 からコミュニティに移行するみたいである。そのため、現行の v2 はメンテナンスモードに移行しており、issue や PR は放置されている状態のように見える。v3 の方も動きがないようだが…

実際 PR を上げてみたものの、現在絶賛レスポンスがない状態になっている。

ちなみに go-jwt-middleware の方にも issue を上げているが、こちらもレスポンスがない。

ということで、困っているのだが、ネクストアクションが思いつかず、どうしたものかなという状態で止まっている。

幸いなことに、特に今すぐ直してもらわないといけないということでもないので、果報は寝て待ての精神で放置している。

共有

Shinichi Morimoto
著者
Shinichi Morimoto
Software Developer