Upload
kazuya-sugimoto
View
998
Download
0
Embed Size (px)
Citation preview
第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)も抑えよう!