今回はAPPLEアカウントを使用したログイン機能である、Sign In With Apple実装におけるネタを1つご紹介させていただきます。
ここ数年、外部アカウントを利用した会員登録が流行っています。
Google、Yahoo、Facebook、Twitter、Lineなど様々なアカウントを使った簡易的な会員登録があります。
最近、私が業務で対応したAPPLEの会員登録(ログイン)機能実装時、Client Secret(クライアントシークレット)というJWT(JSON Web Token)を使用して認証を行います。
私自身、JWTについて知見がなかったため、生成したClient Secretが正しいか否かを確認する方法がわかりませんでした。
ようやくわかったので、JWT(Client Secret)自身が正しいかを確認する方法を掲載させていただきます。
1.JWT.ioへアクセスする
https://jwt.io/
2.Debugger(デバッグできる機能)がトップページにあるため、生成したJWTをEncoded欄にコピペします。
この時点でAlgorithm欄が自動でES256に変更されます。(APPLEのClient Secret事態がそのアルゴリズムであるため)
3.自動で、画面右側のDecodedのHEADER、PAYLOADにJSONの内容が表示されます。
この時点でエラーになり、HEADER、PAYLOADが表示されない場合はJWTが間違っている可能性があります。
4.署名確認
手順3の時点では、Encodedペインの下に「Invalid Signature」と表示されるかと思います。
よって、右ペインのVERIFY SIGNATUREのPUBLIC KEYに公開鍵を入力する必要があります。
—————————————————————————————
<公開鍵生成手順>
(1)APPLEのDEVELOPERサイトにて、Sign In With Apple用に秘密鍵を生成します。
(2)秘密鍵を使用して、公開鍵を取得します。
$ openssl ec -in key.p8 -pubout -out pubkey.p8
—————————————————————————————
5.生成された公開鍵の中身をコピーし、JWT.ioのVERIFY SIGNATURE欄にペースト
結果、「Signature Verified」が表示されれば、署名が正しいことになり、Client Secretも正しい事が分かります。