0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

[ODC]Consume REST APIのBasic認証

Posted at

OutSystemsのConsume REST API(外部のREST APIをOutSystemsのActionのように扱えるようにする機能)はBasic Authenticationをプロパティ指定だけで設定できる。
ちょっと使い方がわかりにくいようなので、手順を確認しておく。

なお、テスト用のREST API(ConsumeするAPI)は、参考に示した過去の記事で作成した以下のExpose REST APIを使う。AuthenticationプロパティをBasicにするのがポイント。
image.png

環境情報

ODC Studio(Version 1.4.24)

参考

Expose REST APIのBasic Authenticationについては以下を参照。

Consume REST APIの公式ドキュメント(2024/09/20時点では日本語訳が無いようす):
Consume REST APIs - ODC Documentation

Consume REST APIを定義

テスト用のAPIはOutSystemsで作成したExpose REST APIなので、swaggerファイルが自動生成される。

よって、このswaggerの定義を使ってConsume REST APIを定義する。
作成手順:

  1. ODC Studio上でREST APIを右クリック
  2. Open Documentationメニューを選択してswaggerドキュメントのページを開く
  3. ページ上にある「swagger json」リンクのアドレスをコピー
  4. ODC Studioに戻り、RESTを右クリック
  5. Consume REST API...を選択
  6. Add multiple methodsを選択
  7. コピーしておいたアドレスを貼り付けて「Add methods」ボタンをクリック

Consume REST APIが出来上がる。
Descriptionプロパティには、Basic認証が必要であることを示すコメントが入っているものの、Authenticationは「No authentication」。
image.png

認証が設定されていないので、このままREST API Methodを呼ぶと、当然認証エラーになる。

以下で、Basic認証を設定する方法を示す。

方法1:Basic authenticationプロパティを設定する(Stage毎に固定の認証情報)

こちらは設定のみで可能な方法。
まずは、REST APIを選択し、Authentication > TypeプロパティでBasic authenticationを選択する。
image.png

認証情報はODC PortalでStage毎に設定。

  1. ODC PortalでAppのページを開く
  2. Configurationタブ > Consumed REST APIsを展開し、作成したConsume REST APIのリンクをクリックして開く
    image.png
  3. Consume REST APIの設定ページが開くので右上のEditボタンをクリック
  4. Basic authenticationのエリアで、ラジオボタンをCustomに変更し、使いたいBaisc認証用アカウント情報を設定し、Saveボタンをクリック
    image.png

ただし、この情報は上の設定手順からもわかるように設定できる認証情報がStage・REST API毎で固定になる。

方法2:On Before Request Callbackでリクエストヘッダに設定する(実行時に動的に設定可能)

Authentication > typeはNo authenticationに戻す。Advanced > On Before RequestプロパティでNew OnBeforeRequestを選択し、Consume REST API Method実行時の前処理を作成する。
image.png

このOnBeforeRequst内でCustomizedRequestというOutput Parameterを編集することでHTTPリクエストを変更できる。
HTTPリクエストヘッダーにAuthorizationヘッダーを追加すれば良い。
Authorizationヘッダーの値のフォーマットは、

  1. 認証に使うUsernameとPasswordを「:」(半角コロン)で結合
  2. 1の結果をBASE64エンコーディングする
  3. 値は「Basic <2の結果>」

実装例(SettingsにUsernameとPasswordを設定しておく)
image.png

先頭のAssignは自動で設定されるものなのでそのまま触らずにおく。
実装内容は、Action FlowにつけたCommentの通り。
最後のListAppendは、以下のパラメータを設定。
image.png

用途の例としては、OnBeforeRequest内で、Request.URLPathなどを見て対象のMethodを特定し、Method毎に異なる認証情報を設定する、などが考えられる。

0
0
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
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?