IdM トークンを使用してサードパーティ・サービスにアクセス

Application Mashup (WireCloud) course @ https://fiware-academy.readthedocs.io/

Presenter Notes

IdM トークンを使用してサードパーティ・サービスにアクセス

イントロダクション

Presenter Notes

イントロダクション

認証が WireCloud インスタンスによって使用されるのと同じ IdM サービスを使用して 管理されるサードパーティ・サービスにアクセスする必要がある場合があります。 そのような場合は、IdM サーバから取得した OAuth2 トークンを ウィジェット/オペレータからのリクエストに挿入するために、WireCloud が提供する サポートを利用できます。

WireCloud は、トークンの注入を担当するコンポーネントである WireCloud の Proxy を通して、このトークン注入のサポートを提供します。IdM から取得したトークンを 使用したい場合は、WireCloud の Proxy を使用する必要があります (たとえば、 MashupPlatform.http.makeRequest メソッドを使用することによって)。WireCloud は、ウィジェット/オペレータからの OAuth2 トークンの読み取りをサポートしていません。

注 : このドキュメントでは、簡単にするために WireCloud 0.9.1 以降で 使用可能なヘッダ名を使用していますが、以前のバージョンの WireCloud では他の名前を使用しています。詳しくは最新のスライドを見てください。

Presenter Notes

イントロダクション

トークン・インジェクション・サポートの使い方

OAuth2 トークンをリクエストに挿入する方法に関するすべての設定は、WireCloud の Proxy によって消費されるHTTP ヘッダを使用して提供されます。メイン・ヘッダは、 以下の通り FIWARE-OAuth-Token です。このヘッダは、OAuth2 トークンを挿入したい リクエスト (値として true を設定提) に追加する必要があります。

匿名ユーザは有効な OAuth2 トークンを持っていないことを考慮してください。また、 WireCloud のカスタム・インスタンスを実行している場合は、いくつかの認証バックエンドを サポートするように設定できます。その場合、一部のユーザは IdM アカウントに 関連付けられません。次のコードを実行すると、現在ログインしているユーザに IdM トークンが関連付けられているかどうかを確認できます :

MashupPlatform.context.get('fiware_token_available');

Presenter Notes

IdM トークンを使用してサードパーティ・サービスにアクセス

IdM トークンを注入...

Presenter Notes

IdM トークンを注入...

HTTPヘッダーに

通常、OAuth2 トークンを HTTP ヘッダに挿入することをお勧めします。これは FIWARE-OAuth-Header-Name ヘッダを使用して実現できます。ちなみに、トークンを OpenStack で使用されているように X-Auth-Token ヘッダに、または、OAuth 2 RFC で規定されているように Authorization ヘッダに追加することをお勧めします。 OAuth2 トークンを Authorization ヘッダに挿入すると、WireCloud はそれに応じて トークン・タイプのプレフィックスを追加します (例 : Bearer)。

:

MashupPlatform.http.makeRequest(url, {
    requestHeaders: {
        "FIWARE-OAuth-Token": "true",
        "FIWARE-OAuth-Header-Name": "X-Auth-Token"
    },
    ...
});

Presenter Notes

IdM トークンを注入...

GET パラメータとして

OAuth2 トークンを挿入するためのもう1つの一般的な場所は、URL の GET パラメータです。 この種の注入はFIWARE-OAuth-GET-Parameter ヘッダを使って設定されます。

:

MashupPlatform.http.makeRequest(url, {
    requestHeaders: {
        "FIWARE-OAuth-Token": "true",
        "FIWARE-OAuth-GET-Parameter": "access_token"
    },
    ...
});

これにより、現在ログインしているユーザの OAuth2 トークンを含む URL に access_token GET パラメータが追加されます。

Presenter Notes

IdM トークンを注入...

リクエストのボディに

最後に、プロキシはリクエストのボディに OAuth2 トークンを挿入できます。 そのためには、FIWARE-OAuth-Body-Pattern ヘッダを使用して検索して OAuth2 トークンに置き換えるパターンを指定する必要があります。

:

MashupPlatform.http.makeRequest(url, {
    method: 'POST',
    postBody: JSON.stringify({token: "%fiware_token%"}),
    requestHeaders: {
        "FIWARE-OAuth-Token": "true",
        "FIWARE-OAuth-Body-Pattern": "%fiware_token%"
    },
    ...
});

これにより、リクエストのボディに出現する %fiware_token% がすべて検索され、 それがユーザの OAuth2 トークンに置き換えられます。

Presenter Notes

IdM トークンを使用してサードパーティ・サービスにアクセス

ダッシュボード所有者の IdM トークンを使用

Presenter Notes

ダッシュボード所有者の IdM トークンを使用

WireCloud 0.7.2 以降は、現在ログインしているユーザの OAuth2 トークンを使用する 代わりに、ダッシュボードの所有者の OAuth2 トークンを使用するための実験的な サポートを提供します。これを行うには、リクエストに FIWARE-OAuth-Source ヘッダを追加して workspaceowner 値を使用します。このヘッダは、以前に提示され、 ヘッダのいずれかと組み合わせて使用することができます : FIWARE-OAuth-GET-Parameter, FIWARE-OAuth-Header-Name または FIWARE-OAuth-Body-Pattern

:

MashupPlatform.http.makeRequest(url, {
    requestHeaders: {
        "FIWARE-OAuth-Token": "true",
        "FIWARE-OAuth-Header-Name": "X-Auth-Token",
        "FIWARE-OAuth-Source": "workspaceowner"
    },
    ...
});

Presenter Notes