1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

MuleSoft で B2C Commerce を利用してみる(事前準備編)

Last updated at Posted at 2022-11-29

※ これから記載する事項は、私が所属する会社とは切関係のない事柄です。

今回は私自身初めてMuleSoftに触れてみました。MuleSoft はかなりドキュメントが豊富で、基礎は公式ドキュメント「チュートリアル: API ビルドの最初から最後まで」を見ればかなりわかりますので、割愛します。
今回の記事では MuleSoft から B2C Commerce を利用してみる前に、基礎を知った上でよくありそうな設定として、設定ファイルを環境で分ける設定、Basic 認証の設定、 HTTPS の設定をやってみたので紹介させていただきます。

前提

  • 今回自身のローカル環境で使用した Anypoint Studio は Version 7.12.0 を利用しています。
  • 設定の方法は複数存在しますが、今回紹介しているのはあくまで一部の方法です

目指す API

今回目指す API は /api/postman/{id} のフォーマットのエンドポイントに対して任意の JSON オブジェクトと q と言うクエリを指定するとその値をレスポンスとして返すものです(最終的にPostman使って確認するので postman と言う文言が入っています)。さらに、CloudHub へデプロし、HTTPS で繋げるようにし、Basic 認証をかけるようにします。

サンプルリクエスト

REQUEST: 
POST /api/postman/0001?q=ABC
Host: hogehoge.sample-trial-api.us-e2.cloudhub.io
Authorization: Basic {credential}

REQUEST BODY:
{
  "test": "Test"
}

RESPONSE BODY:
{
  "id": "0001",
  "req": {
    "test": "Test"
  },
  "q": "ABC"
}

サンプル RAML

#%RAML 1.0
title: Sample Trial API
baseUri: http://localhost:8081/api
mediaType:
  - application/json
/postman/{id}:
  post:
    queryParameters:
      q?:
        example: Example
        type: string
    responses:
      "200":
        body:
          application/json:
            properties:
              id:
                example: Example
                type: string
              req:
                type: object
              q:
                example: Example
                type: string
    securedBy: []
    body:
      application/json:
        type: object
securitySchemes:
  SecurityScheme:
    type: Basic Authentication
securedBy: []

API の設定

シンプルなAPIなので、設定は非常にシンプルです。
「Transform Message」モジュールを利用し、下記の DataWeave 言語を設定するだけです。

%dw 2.0
output application/json
---
{
    "id": attributes.uriParams.'id',
    "req": payload,
    "q": attributes.queryParams.'q'
}

スクリーンショット 2022-11-17 17.59.07.png

設定ファイルを環境で分ける

今回は分ける必要はなかったのですが、ローカル環境と開発環境の設定ファイルを出し分けるように設定しました。設定方法は公式ヘルプの「プロパティの設定」「環境プロパティの設定」を参考にしました。

ローカル環境では「local-config.yaml」開発環境では「dev-config.yaml」のプロパティファイルを src/main/resources 配下に設置し、利用するようにします。
スクリーンショット 2022-11-17 18.07.00.png

「env」と言うグローバルプロパティを設定し、値を切り替えることでプロパティファイルを切り替えています。
スクリーンショット 2022-11-19 13.14.39.png

ローカルでは画像のように「env」に「local」と言う値が入っています。
スクリーンショット 2022-11-19 13.14.31.png

CloudHub にデプロイした際には管理画面上から「dev」と言う値を設定してあります。
スクリーンショット 2022-11-19 14.05.01.png

Basic 認証の設定

MuleSoft にはすぐに利用できるポリシーが多くあります。この中の「基本認証 - シンプル」を利用して Basic 認証をかけたいと思います。

まずAPI Manager から新しく API を作成します。設定方法の詳細は「RAML または OAS API プロキシを設定する」などを参考にしてください。
今回はCloudHubにすでにデプロイしてある既存のアプリケーションに対して直接繋ぐ(新しくプロキシアプリをデプロイしない)ように画像のような設定を行いました。

スクリーンショット 2022-11-19 14.58.10.png

そして作成したAPIに対して「基本認証 - シンプル(Basic Authentication - Simple)」ポリシーを追加します。(追加時にID、パスワードは設定できます)
スクリーンショット 2022-11-19 15.26.45.png

これで完了だと思ったのですが、API 作成後すぐには API Status が「Unregistered」になっており、実際にエンドポイントにアクセスしてもBasic認証はかかってなかったです。どうやらAPI 自動検出の設定をしないといけないようだったので、そちらの設定も紹介します。方法については「Mule 4 アプリケーションでの API ゲートウェイの API 自動検出の設定」を参考にしています。

「API Auto-discovery」と言う設定で API ID のところに「apiId」と言う環境変数を設定し、Flow Name には API のルートにあたるフローを設定します。(コンソールにも Basic 認証を効かせたい場合はコンソールのルートにあたるフローに対しても同じ設定を行います。)
スクリーンショット 2022-11-19 15.37.19.png

API Manager から API Instance ID を取得します。

スクリーンショット 2022-11-19 15.47.15.png

取得した値を設定ファイルに記入します。
スクリーンショット 2022-11-19 15.46.43.png

さらにプラットフォームへ接続するための認証の設定をする必要があります。
まず「環境のログイン情報の取得 (推奨)」に従ってクライアントIDとシークレットを取得してください。
その後「Anypoint Studio 7 でのログイン情報の設定」に従ってAnypoint Studioにログイン情報を入力します。

スクリーンショット 2022-11-19 16.05.56.png

また CloudHub にデプロイする際にも下記のように変数としてログイン情報を入力します。

スクリーンショット 2022-11-19 14.05.03.png

これで実際にサイトにアクセスして Basic 認証がかかっていたら成功です。
スクリーンショット 2022-11-19 16.08.41.png

HTTPS の設定

最後に HTTPS で接続できるようにする設定を行いたいと思います。
今回は「HTTPS サービスの構築」を参照しながらプロキシを利用せずにアプリケーションに証明書を設定する方法を紹介します。(プロキシを利用して方法は「HTTPS API プロキシの構築」を参照してください。)

まず(自己証明書入り) JKS ファイルを下記コマンドで作成します。(作成時に設定したパスワード、エイリアス、ファイル名は後にも利用します。)

keytool -genkey -keyalg RSA -alias <key-alias> -keystore <keystore-name>.jks
keytool -export -alias <key-alias> -keystore <keystore-name>.jks -file <certificate-name>.cer

作成したJKSファイルを src/main/resources 配下に設置します。 今回は keystore と言うフォルダを新しく作成して、その中に設置しました。
スクリーンショット 2022-11-19 16.18.16.png

API とコンソールともに利用している HTTP に関する設定ファイルを下記画像のように修正します。
スクリーンショット 2022-11-19 16.21.10.png

スクリーンショット 2022-11-19 16.21.27.png

最後に下記画像のように設定ファイルに値に JKS ファイル作成時に指定したパスワード、エイリアス、ファイル名を追加し、 CloudHub へのデプロイを行います。(ローカル環境の設定ファイルには HTTPS のポート番号も設定する必要があります)

スクリーンショット 2022-11-19 16.28.44.png

実際にローカルまたはCloudHubにデプロイしたURLにHTTPSでアクセスして表示されていることを確認できれば成功です。
スクリーンショット 2022-11-19 16.55.05.png

自主学習に利用できそうなリソース

1
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?