認証と認可

カスタム API は、カスタムスコープを 1 つだけ含むセキュリティスキームによって保護する必要があります。カスタム API にアクセスするには、クライアントは必要なスコープのトークンを取得する必要があります。

エンドポイントを保護し、エンドポイントに許可されたリクエストを行うには、次の手順を実行します。

  1. エンドポイントのセキュリティスキームとカスタムスコープを選択します。
  2. API クライアントを更新して、トークンにカスタムスコープを含めます。

エンドポイントの保護 

エンドポイントは、API コントラクトのセキュリティスキームに関連付けられている必要があります。

  • ShopperToken: Shopper API とストアフロントのユースケース向け。Shopper Login and API Access を使用してトークンを取得します。
  • AmOAuth2: SCAPI Admin API をバックオフィスアプリで使用する場合。Account Manager を使用してトークンを取得します。

アソシエーションは操作ごとまたはグローバルのいずれかで、操作スキームが優先されます。このスキームは、非カスタム B2C Commerce API (SCAPI) で使用されるスキームと同じです。

スキームでは、カスタムスコープを 1 つだけ設定する必要があります。

コントラクトで使用されるスキームは、次のように components セクションで定義する必要があります。

1components:
2  securitySchemes:
3    ShopperToken: {}
4    AmOAuth2:
5      type: oauth2
6
7# 👇 A global scheme applies to all operations in this file.
8security:
9  - AmOAuth2: ["c_loyalty_rw"]
10
11paths:
12  /customer:
13    get:
14      operationId: getLoyaltyInfo
15      parameters:
16        - in: query
17          name: siteId
18          required: true
19          schema:
20            type: string
21            minLength: 1
22      responses:
23        200:
24          description: OK
25      # 👇 An operation scheme applies only to this operation and takes precedence over the global scheme.
26      security:
27        - ShopperToken: ["c_loyalty"]

カスタムスコープは、次の要件を満たしている必要があります。

  • 名前は c_ で始まる必要があります。
  • 名前には、英数字、ピリオド、ハイフン、アンダースコア以外の文字を含めることはできません。
  • 名前は 25 文字以下にする必要があります。

正しいスキームまたはスコープの割り当てがないエンドポイントは登録されません。

登録エラーを確認するには、Log Center で CustomApiRegistry を含むカテゴリのメッセージを検索します。

エンドポイントのリクエスト 

ShopperLogin 

ShopperLogin のスコープは、SLAS Admin UI でクライアントに割り当てることができます。以下に例を示します。

カスタム API SLAS スコープの構成と許可

SLAS トークンを取得するには、Shopper Login の概要の手順に従います。

AmOAuth2 

AmOAuth2 のカスタムスコープは、Account Manager でクライアントに割り当てることができます。以下に例を示します。

カスタム API の Account Manager OAuth2 スコープ構成

Account Manager トークンを取得するには、Admin API の認可のガイドの手順に従います。

認可されていないリクエストは 401 Unauthorized レスポンスを受け取ります。

完全なセキュリティスキーム定義 

エンドポイントの登録では、セキュリティスキームの完全な定義は必要ありませんが、ドキュメント、テスト、コードスタブ、およびモックリクエストを作成できる完全で有効なスキームがあると便利です。次のコードは、完全な例を示しています。

1components:
2  securitySchemes:
3    ShopperToken:
4      type: oauth2
5      flows:
6        authorizationCode:
7          authorizationUrl: https://my-shortcode.api.commercecloud.salesforce.com/shopper/auth/v1/organizations/{organizationId}/oauth2/authorize
8          tokenUrl: https://my-shortcode.api.commercecloud.salesforce.com/shopper/auth/v1/organizations/{organizationId}/oauth2/token
9          scopes:
10            c_my-scopes: description of my-scopes
11        clientCredentials:
12          tokenUrl: https://my-shortcode.api.commercecloud.salesforce.com/shopper/auth/v1/organizations/{organizationId}/oauth2/token
13          scopes:
14            c_my-scopes: description of my-scopes
15    AmOAuth2:
16      type: oauth2
17      flows:
18        authorizationCode:
19          authorizationUrl: https://account.demandware.com/dwsso/oauth2/authorize
20          tokenUrl: https://account.demandware.com/dwsso/oauth2/access_token
21          scopes:
22            c_my-scopes: description of my-scopes
23        clientCredentials:
24          tokenUrl: https://account.demandware.com/dwsso/oauth2/access_token
25          scopes:
26            c_my-scopes: description of my-scopes