2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【認証機能バグ】Apple IDを利用したログインができなくなった

Last updated at Posted at 2024-02-07

シチュエーション

ある日、これまで利用できていたAppleIDを利用した認証機能が利用できなくなった。
AppleIDを利用して認証するユーザーはサービスを利用することができない。
早期に問題の解決を求められる。

なぜ、認証機能がうまく動作しないのだろうか?

問題箇所

email_verified
A string or Boolean value that indicates whether the service verifies the email. The value can either be a string ("true" or "false") or a Boolean (true or false). The system may not verify email addresses for Sign in with Apple at Work & School users, and this claim is "false" or false for those users.(email_verified
Goolgle翻訳:サービスが電子メールを検証するかどうかを示す文字列またはブール値。値は文字列( "true" or "false") またはブール値 (trueまたはfalse) のいずれかです。システムは、職場および学校で Apple でサインインするユーザーの電子メール アドレスを検証できない可能性があり、この申し立てはそれらのユーザーを"false"対象としていますfalse。)
AppleIDは公式ドキュメント

email_verifiedの値は、文字列( "true" or "false") またはブール値 (trueまたはfalse) のいずれかです。
どちらか一方しか対応していなかった場合、認証時にエラーが発生してしまいます。

解決

stringとBooleanの両方に対応する

func (p *appleAuthProfile) GetEmailVerified() (bool, bool) {
	// email_verifiedがない場合はfalseとする
	v, ok := p.claims["email_verified"]
	if !ok {
		return false, false
	}
	// email_verifiedはstringまたはboolで返ってくる
	switch v := v.(type) {
	case bool:
		return v, true
	case string:
		return v == "true", true
	default:
		return false, false
	}
}

おわりに

Twitterなどを見てもAppleIDでログインできないサービスは複数ある状況だったため、これはApple側の障害に違いないと結論づけたくなる。
しかし、ログと公式ドキュメントを辿ると実装ミスであることがわかった。

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?