HTTP(S) ヘッダーの x-soracom-token
に設定された JWT ヘッダーを検証することで、任意のデバイスからの通信であることを検証できます。
トークンは Json Web Token (JWT) フォーマットとなっており、各種プログラミング言語向けの JWT ライブラリ を用いることで含まれる情報の取得や、改ざんなどがされていないかどうかを簡単に確認できます。
上記のトークンを JWT の仕様に従ってデコードすると、下記のような情報がペイロードに含まれています。
{
"iss": "https://soracom.io",
"aud": "srn:soracom:OP00XXXXXXXX:jp:Subscriber:44052XXXXXXXXXXX",
"jti": "4i2qn8oqu78",
"iat": 1558673437,
"typ": "soracom/token/v1",
"sub": "funk.soracom.io",
"ctx": {
"operatorId": "OP9012345678",
"resourceType": "Subscriber",
"resourceId": "440101234567890",
"sourceProtocol": "udp",
"srn": "srn:soracom:OP00XXXXXXXX:jp:Subscriber:44052XXXXXXXXXXX",
"imsi": "440101234567890",
"simId": "44010123456789012345",
"imei": "123456789012345"
}
}
トークンは、SORACOM が持つ秘密鍵でその内容に署名がなされており、対応する公開鍵をダウンロードしていただくことで改ざんがされていないかどうか検証することができます。 公開鍵のファイル名はトークンのヘッダ部分に kid という属性名で含まれています。
{
"kid": "v1-f2fea060b93f510bfb722fXXXXXXXXXX-x509.pem",
"alg": "RS256"
}
上記の例の場合、v1-f2fea060b93f510bfb722fXXXXXXXXXX-x509.pem
が公開鍵のファイル名となります。
署名検証に用いる公開鍵は、https://s3-ap-northeast-1.amazonaws.com/soracom-public-keys/
以下に保存して配信しており、この URL にヘッダ内の公開鍵のファイル名を連結すると、そのトークンの検証に利用可能な公開鍵の URL となります。
つまり、上記例の場合、署名検証に必要な公開鍵は https://s3-ap-northeast-1.amazonaws.com/soracom-public-keys/v1-f2fea060b93f510bfb722fXXXXXXXXXX-x509.pem
からダウンロードできます。
この公開鍵を利用することでトークンの検証が可能となります。