OCAPI セッションブリッジ 23.1
OCAPI とお使いのセッションベースのストアフロントとの間のシームレスな対話を実現するため、OCAPI セッションブリッジが用意されています。これにより、顧客を再認証しなくても、セッションの JWT の取得や、その逆を行うことが可能です。
通常このブリッジは次の 2 つのリソースから成り立ちます:
-
/customers/auth リソースを使用して、セッションの JWT をリクエストします。
-
/sessions リソースを使用して、JWT のセッションをリクエストします。
JWT の取得
ゲスト または 登録済み 顧客の JWT を取得するには、有効な dwsid Cookie を /customers/auth リソースへ渡す必要があります。"type":"session" を使用する必要があります。また、グローバルセキュリティ環境設定で「HTTPS を強制する」を有効にしていない場合は、有効な dwsecuretoken をリクエストで渡す必要があります。成功の場合、Authorization:Bearer レスポンスヘッダーとして JWT を取得します。
次の例では、グローバルセキュリティ環境設定で「HTTPS を強制する」が有効になっておらず、dwsecuretoken がリクエストに含まれている場合に、このアプローチがどのように動作するかを示します。
1REQUEST:
2POST /dw/shop/v23_1/customers/auth
3Host: example.com
4Authorization: Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ==
5Content-Type: application/json
6x-dw-client-id: [your_own_client_id]
7Cookie: dwsid=pATvWUO3KSdt-Kmcy-8-RsxKnoO4BMDwoec7ACVlW6tZNnhaOL7gt7mHqL-h7QYn5TyE61z0DeSMCqxngsWeHw==;
8 dwsecuretoken_9727b83e8e864fa4b6902a37bc70a12d=5Kx5-2P7jj5WoxeTiWwHNBJ6QV39Io5SNA==;
9
10{
11 "type" : "session"
12}
13
14RESPONSE:
15HTTP/1.1 200 OK
16Content-Length:124
17Authorization:Bearer eyJfdiI6IjXXXXXX.eyJfdiI6IjEiLCJleHAXXXXXXX.-d5wQW4c4O4wt-Zkl7_fiEiALW1XXXX
18Content-Type:application/json;charset=UTF-8
19
20{
21 "_v" : "23.1",
22 "_type" : "customer",
23 "auth_type" : "guest",
24 "customer_id" : "abdtkZzH6sqInJGIHNR1yUw90A",
25 "preferred_locale" : "default"
26}
グローバルセキュリティ環境設定で「HTTPS を強制する」が有効になっている場合、リクエストはこの例のようになり、dwsecuretoken は含まれません。
1REQUEST:
2POST /dw/shop/v23_1/customers/auth
3Host: example.com
4Authorization: Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ==
5Content-Type: application/json
6x-dw-client-id: [your_own_client_id]
7Cookie: dwsid=pATvWUO3KSdt-Kmcy-8-RsxKnoO4BMDwoec7ACVlW6tZNnhaOL7gt7mHqL-h7QYn5TyE61z0DeSMCqxngsWeHw==
8
9{
10 "type" : "session"
11}
Note: セッションと JWT との間には強い結合はありません。同じセッションをもつ複数のリクエストで異なるトークンを取得します。このため、セッションあたりの呼び出しは 1 回のみにする必要があります。
詳細については、/customers/auth リソースを参照してください。
セッションの取得
ゲスト または 登録済み 顧客のセッションを取得するには、有効な JWT を /sessions リソースへ渡す必要があります。JWT は Authorization:Bearer リクエストヘッダーとして渡す必要があります。成功の場合、セッション Cookie を取得します。
グローバルセキュリティ環境設定で「HTTPS を強制する」を有効にしていない場合は、レスポンスに dwsecuretoken のための Set-Cookie ヘッダーが含まれています。グローバルセキュリティ環境設定で「HTTPS を強制する」が有効になっているいる場合は、レスポンスに dwsecuretoken のための Set-Cookie ヘッダーは含まれていません。
次の例では、グローバルセキュリティ環境設定で「HTTPS を強制する」が有効になっておらず、dwsecuretokendwsecuretoken が Set-Cookie ヘッダーとしてレスポンスに含まれている場合にこのアプローチがどのように動作するかを示します。
1REQUEST:
2POST /dw/shop/v23_1/sessions HTTP/1.1
3Host: example.com
4x-dw-client-id: [your_own_client_id]
5Authorization: Bearer eyJfdiI6IjXXXXXX.eyJfdiI6IjEiLCJleHAXXXXXXX.-d5wQW4c4O4wt-Zkl7_fiEiALW1XXXX
6
7RESPONSE:
8HTTP/1.1 204 NO CONTENT
9Set-Cookie : dwsecuretoken_a85a5236a2e852d714eb6f1585efb61c=""; Expires=Thu, 01-Jan-1970 00:00:10 GMT;
10Set-Cookie : dwsid=eXv5R3FZGI4BBfbK1Opk5s1mJ-41Aw7ZuaMKxeye5xa16fJMX--AnNkXsvmakbi1UZSzP1zoPmUILgoom1_jKg==;
11Set-Cookie : dwanonymous_a85a5236a2e852d714eb6f1585efb61c=bdjalnzmfrkJ0FtYliwud5db67; Max-Age=15552000;
12Cache-Control: max-age=0,no-cache,no-store,must-revalidate
グローバルセキュリティ環境設定で「HTTPS を強制する」が有効になっている場合、レスポンスはこの例のようになり、dwsecuretoken のための Set-Cookie ヘッダーは含まれません。
1REQUEST:
2POST /dw/shop/v23_1/customers/auth
3Host: example.com
4Authorization: Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ==
5Content-Type: application/json
6x-dw-client-id: [your_own_client_id]
7Cookie: dwsid=pATvWUO3KSdt-Kmcy-8-RsxKnoO4BMDwoec7ACVlW6tZNnhaOL7gt7mHqL-h7QYn5TyE61z0DeSMCqxngsWeHw==
8
9{
10 "type" : "session"
11}
Note: セッションと JWT との間には強い結合はありません。同じ JWT をもつ複数のリクエストで異なるセッションを取得します。つまり、JWT あたりの呼び出しは 1 回のみにする必要があります。
詳細については、/sessions リソースを参照してください。