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

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

Embed Size (px)

Citation preview

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

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

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

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

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

なんかRESTとSOAPとWeb API

ってあるんだけど?

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

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

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

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

今日のゴール

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

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

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

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

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

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

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

Page 6: 【第5回jduc】【勉強会】dynamics 365 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

Page 7: 【第5回jduc】【勉強会】dynamics 365 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

これを使え!

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

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

Page 9: 【第5回jduc】【勉強会】dynamics 365 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を利用しよう!

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

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

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

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認証か

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

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

Page 13: 【第5回jduc】【勉強会】dynamics 365 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

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

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

Page 15: 【第5回jduc】【勉強会】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な形式でデータの操作をサポートわかりやすい

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

HTTP Request/Response デモ

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

まとめ

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

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

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

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

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

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

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

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