【第5回jduc】【勉強会】dynamics 365 web apiとの接し方

Post on 21-Jan-2018

998 Views

Category:

Technology

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

第5回 JDUC勉強会Dynamics 365 Web APIとの接し方@sugimomoto

最近あったWeb APIに関する質問

認証ってOAuthでいいの?オンプレなんだけど?

なんかRESTとSOAPとWeb API

ってあるんだけど?

Web APIって、なんでもデータが取得できるんだよね?

しかも、最近のDynamics 365 はWeb APIの変革期

今日のゴール

Dynamics 365 とデータ連携したいよー

それならWeb APIあるじゃん!?

でも、Web APIの種類はどれを使えばいいの?

でも、Web APIの認証ってどうすればいいの?

でも、Web APIでどんなことができるの?

Q1. Web APIの種類はどれを使えばいいの?

Dynamics 365 Web APIの種類

REST API SOAP API Web API

Microsoft 呼称組織データサービス

REST エンドポイント組織サービス

SOAP エンドポイントWeb API

OData v4 REST

プロトコル OData v2 SOAP OData v4

状況既に廃止済み

Dynamics CRM 2015までVer 9.Xで廃止予定

http://bit.ly/2vR33C1メインストリーム

Dynamics CRM 2015から

リファレンスhttps://msdn.microsoft.com/library/gg334279(v=crm.7).aspx

https://msdn.microsoft.com/ja-jp/library/mt608074.aspx

https://msdn.microsoft.com/ja-jp/library/mt593051.aspx

Dynamics 365 Web APIの種類

REST API SOAP API Web API

Microsoft 呼称組織データサービス

REST エンドポイント組織サービス

SOAP エンドポイントWeb API

OData v4 REST

プロトコル OData v2 SOAP OData v4

状況既に廃止済み

Dynamics CRM 2015までVer 9.Xで廃止予定

http://bit.ly/2vR33C1メインストリーム

Dynamics CRM 2015から

リファレンスhttps://msdn.microsoft.com/library/gg334279(v=crm.7).aspx

https://msdn.microsoft.com/ja-jp/library/mt608074.aspx

https://msdn.microsoft.com/ja-jp/library/mt593051.aspx

これを使え!

Q2. Web APIの認証ってどうすればいいの?

Web APIの認証はどうなってるの?

HTTP/SNTLM認証

認証不要

Dynamics 365

OnlineDynamics 365

On-Premiss

Dynamics 365

Internal

IFD構成なし

IFD構成あり

OAuth 2.0 認証

Implicit Grant

Resource Owner

Password

Credential Grant

Client

Credential

Grant

認証方式

プラットフォーム

アプローチ

Dynamics 365 OnlineであればOAuth 2.0による認証Implicit GrantもしくはClient Credential Grantを利用しよう!

Client Credential Grant

データ連携におけるバッチ処理やインターフェースプログラム等アクセスするユーザーのコンテキストに重要性が無い場合オススメ

Client IdとClient Secretの発行およびアプリケーション登録で可能になる認証アプローチ

(別名Server to Server 認証:S2S認証)

POST https://login.microsoftonline.com/tenantId/oauth2/token

Media/type application/x-www-form-urlencoded

Grant_type=client_credentials&client_id=clientId&client_secret=clientSecret&resource=https://***.crm7.dynamics.com/

参考:【Dynamics 365】【8.2新機能】サーバ間(S2S)認証を試してみた

http://bit.ly/2wfyKDf

Dynamics 365 Web APIの認証を使用するための注意点

・必ず一意のユーザーを指定

リソースに誰がアクセスしたのか? という情報が必ず必要

(だから最近までClient Credentialが使えなかったと思われる)

・連携プログラムの管理情報に注意

Password Credentialの場合はID・PWの管理が必要(Office365のパスワード変更の影響あり)

Client Credential GrantはClient Id / Client Secretを管理(Client Secretは期限付き)

・オンプレミスの場合、認証アプローチはケースバイケース

イントラネットワークの疎通可能なところにアプリケーションがいる場合は「NTLM認証」

イントラネットワーク外の場合は、ADFS/OAuth認証もしくは、VPN等で繋いでNTLM認証か

Q3. Web APIでどんなことができるの?

Dynamics 365 Web APIでできること

・レコードの作成(Create)・レコードの更新(Update)・レコードの取得(Retrieve)・レコードの削除(Delete)・レコードの作成 or 更新(Upsert)

Basic Operation

・関数の実行(Function)・アクションの実行(Action)

Business Logic Operation

・バッチ操作(HTTP/Multipart)・ユーザーの偽装・条件付き演算(Optimistic Concurrency)

Utility

・メタデータの取得・エンティティの作成・更新・削除・フィールドの作成・更新・削除

Metadata Operation

1 2

3 4

ちなみにDynamics 365 のWeb APIはポイントさえ抑えれば怖くない!

参照も編集もREST Fulな形式でサポート

レコードの取得 レコードの作成 レコードの更新 削除

GET https://***/api/data/v8.2/accounts

Authorization: Bearer *token*Accept: application/jsonOData-MaxVersion: 4.0OData-Version: 4.0)

POST https://***/api/data/v8.2/Accounts

Authorization: Bearer *token*OData-Version: 4.0OData-MaxVersion: 4.0Content-Type: application/json

name:’Create Account',

PUTCH https://***/api/data/v8.2/Accounts(guid)

Authorization: Bearer *token*Odata-Version: 4.0Odata-MaxVersion: 4.0Content-Type: application/json

name:’Update Account',

DELETE https://***/api/data/v8.2/Accounts(guid)

Authorization: Bearer *token*OData-Version: 4.0OData-MaxVersion: 4.0

REST Fulな形式でデータの操作をサポートわかりやすい

HTTP Request/Response デモ

まとめ

でも、Web APIの種類はどれを使えばいいの?

→最新のWeb API Odata v4を使おう!

でも、Web APIの認証ってどうすればいいの?

→OnlineでバッチとかならOAuth2.0認証を使おう!

S2S認証(Client Credential)がオススメ!

でも、Web APIでどんなことができるの?

→Odataプロトコルに則って、データのCRUD操作が簡単にできるよ!

ただし、ビジネスロジック(Action・Function)も抑えよう!

top related