OPTiM Store のユーザー企業様が御社サービスを利用開始する際に行われる、テナント契約開始処理のAPIです。
御社サービス側に実装頂き、OPTiM Store よりAPIの呼び出しを行います。
Content-Type: application/json
key | type | description |
---|---|---|
contract_statement | String | Contract Statement AttributesのJSONを署名したJWT形式の文字列 |
{
"contract_statement": "eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsImtpZCI6Im01ZThpY2lZQ2FoNkNDS3lvSzBrbHBZZnIzNmd1RWRJOHF4QTEwdEFNaG8ifQ.eyJpc3MiOiJodHRwczovL3N0b3JlLm9wdGltLmNvLmpwIiwiYXVkIjoiaHR0cHM6Ly95b3VyLXNlcnZpY2UuZXhhbXBsZS5jb20vY29udHJhY3QvYXBpIiwiY29tcGFueSI6eyJpZCI6ImY0NmY5OTcwYzkxNGFmOWEyMjQ5MTQwMmFhOWVlZGM0YTk2NDVmMmQyYTMwM2EzOTg2N2MzMDRiYTQ2MWM0N2YiLCJuYW1lIjoiIFhYWCIsIndlYnNpdGUiOiJodHRwczovL3h4eC5leGFtcGxlLmNvbSIsImNvbnRhY3QiOiJzeXNhZG1pbkB4eHguZXhhbXBsZS5jb20ifSwibGljZW5jZSI6eyJwb29sIjoxMH0sImNvbnRyYWN0X2p3ayI6eyJraWQiOiIwLUI1SFZJZEhVdThjUE1LU24zandsQTBjdG9mX2FqTlVvYmxuRWpZV3JJIiwia3R5IjoiUlNBIiwiZSI6IkFRQUIiLCJuIjoiNkpOSEZ0bDNhdG9iM3U0NVEyM2ZhdzJtRUFQNGxPWk81UE41aC04UV9OZnFSaTJBRHpIQWRBTTlCU0V6U3dxcGxBV0trcjZZOVBMcldLdnNnRjZxNk4tZjNOSGN6YWEydmZxdDVDVzRHaVdCdlB3MmhaOXkyQjJFekI3NmZJbmdUbjQza0U3MXA1dTZqSVdkZmxrbVRFbUtNVkVtZEM3S1ZSeG9NUVFrWGlHLVFVN1J3X0Zycl9PdEdPblhYaHhUcnoxdHlobTlGam1VMUltSFptMlJpYjVORVg0Z2hBQUlKWnN3Tjh6TjV0RXlKaUdnMWFKNEJmWXJTOUFYRVhRSGFZSlg5S3pidi1VcVlHSWlGSGNQMU1tSzRacVE1S3A4eF9rMElEQTVEVWMzZWNEdzBBeG1fQXJsMUJQOTRZVlBRb2IyRDFYZ3I2cVl0LTJYcDB1eHl3IiwidXNlIjoic2lnIn0sImlhdCI6MTQ2NDA1MzcwNiwiZXhwIjoxNDY0MDU0MzA2fQ.O5FiomvNB6SiSGSlW1TAG4Q_Kesg7s7FfmraAb6G4CIgIq4UHCT8R7CT-ayS8GVT_GB4b40Ruc88Te-baZ2qC0vh3ceIzlNMep8mp4vLhzsxj7MgqGNyKiTjzvaTwLtRLD7Uc_-2-OVPgCha1545BlFxLbcPKRjxaNc5QmmBA6yi0kmCsidk1lfWEKx0vGZZih77g4Wn_k9LMQ4aB4OOkLvpaO0Afi0D-nv91xy2QI-pMDTphNpSqZkZBsNvvtyuEHHbo1qhrUJ81NDdALPUoMcws8TKq7pB5j_NUEY7sfXqgR0FQ5WvBult43Xx7RHvlNqOhpxw9bUQpWBcPstcHQ"
}
key | type | description |
---|---|---|
iss | string | リクエスト発行者 (issuer) の識別子です。OPTiM Store の URL となります。 |
aud | string | リクエスト受信者 (audience) の識別子です。御社サービスの Tenant Contract API Endpoint URL となります。 |
company | object | 実際に御社サービスを利用される OPTiM Store ユーザー企業様の情報です。特に必要が無い場合は無視していただいても結構です。 |
license | object | 購入ライセンス数等の情報です。現時点ではライセンス数のみを含みます。 |
contract_jwk | object | 各テナント契約ごとに OPTiM 側で生成される RSA 鍵ペアの公開鍵です。契約開始直後 Provisioning の自動設定を行う際に必要になります。 |
iat | integer | リクエスト生成日時 (issued_at) を示す Unix Timestamp です。 |
exp | integer | リクエストの有効期限 (expires_at) を示す Unix Timestamp です。 |
contract_statement
のJWTの署名検証を行ってください。{
"iss": "https://store-xyz.optim.co.jp",
"aud": "https://your-service.example.com/contract/api",
"company": {
"id": "f46f9970c914af9a22491402aa9eedc4a9645f2d2a303a39867c304ba461c47f",
"name": "株式会社 XXX"
},
"license": {
"pool": 10
},
"contract_jwk": {
"kid": "0-B5HVIdHUu8cPMKSn3jwlA0ctof_ajNUoblnEjYWrI",
"kty": "RSA",
"e": "AQAB",
"n": "6JNHFtl3atob3u45Q23faw2mEAP4lOZO5PN5h-8Q_NfqRi2ADzHAdAM9BSEzSwqplAWKkr6Y9PLrWKvsgF6q6N-f3NHczaa2vfqt5CW4GiWBvPw2hZ9y2B2EzB76fIngTn43kE71p5u6jIWdflkmTEmKMVEmdC7KVRxoMQQkXiG-QU7Rw_Frr_OtGOnXXhxTrz1tyhm9FjmU1ImHZm2Rib5NEX4ghAAIJZswN8zN5tEyJiGg1aJ4BfYrS9AXEXQHaYJX9Kzbv-UqYGIiFHcP1MmK4ZqQ5Kp8x_k0IDA5DUc3ecDw0Axm_Arl1BP94YVPQob2D1Xgr6qYt-2Xp0uxyw",
"use": "sig"
},
"iat": 1464053706,
"exp": 1464054306
}
御社サービス側でリクエストを承認された場合、下記に従ったレスポンスを返却してください。
201 Created
key | type | description |
---|---|---|
iss | string | レスポンス発行者 (issuer) の識別子です。御社サービスの Tenant Contract API Endpoint URL となります。 |
aud | string | レスポンス受信者 (audience) の識別子です。OPTiM Store の URL となります。 |
contract_jwk | object | 各テナント契約ごとに御社サービス側で生成いただく RSA 鍵ペアの公開鍵です。契約開始直後 Federation の自動設定を行う際に必要になります。 |
iat | integer | レスポンス生成日時 (issued_at) を示す Unix Timestamp です。 |
exp | integer | レスポンスの有効期限 (expires_at) を示す Unix Timestamp です。 |
{
"iss": "https://your-service.example.com/contract/api",
"aud": "https://store-xyz.optim.co.jp",
"contract_jwk": {
"kid": "u67PW3Rc0To3t_4fPz3Cwb0fuxICXXhI8SwBnak4C6Q",
"kty": "RSA",
"e": "AQAB",
"n": "yUB7KMp_ZsEbK734sMPjRSPfM7pV0Jf5KyjkkXk5Mw6Jja8z-ZTigqaoJVcV4tFX2CyTqDmVNgzb9oQJL62otjDWRwdFL99Rdor_YsxZt2eOSnBBY8PdhjYHTJtczIXsCHtYtx0clYcjMjvwNG_FIL4UJILmiHPxMMmWxPjEtTIo0pp8KdrrGZExJp4UD7JC7nPiNdvs31GHV0IoXpxqQAatfFBwQHFG3Fxsz7JS9p3mf_VBZ2CyPsdS58NqMPQVBbyxsdbK_OiPOk-4dmlJtxZFTMjXoBg4-hL9B1rRrUrN5ttm7QjJr3wjnKUy_OdKsqjxhPaj7XV04TuxBhxzOw"
},
"iat": 1464053706,
"exp": 1464054306
}
本APIにより、OPTiM Store / 御社サービス双方で当該契約に紐づく RSA 鍵ペアが生成され、相互に公開鍵を交換完了した状態になります。
契約成立後は、自身の持つテナント契約毎の秘密鍵を使って署名したリクエストを送信し、相手の公開鍵でその署名を検証することができるようになります。
Provisioning / Federation の各システム連携に用いる OAuth / OpenID Connect Client の自動登録には、上記鍵ペアを利用します。
そのため、本APIで交換したお互いの秘密鍵/公開鍵はデーターベースなどに契約と紐付けた形で保持してください。