9. Developers Guests
Custom
Admins
API Management Overview
API Management
Group
API
Subscription
Policy
Frontend Backend Api
/path https://~
https://<APIM Name>.azure-api.net
アクセス制御
Developer(User)
N:N
Operations
In
Out
Err
Policy
N:N
Developer Portal
Nextscape Inc. 9
API
(Backend)
(Publisher)
Client
(FrontEnd)
(Consumer)
Products(製品)
N:N
10. Developers Guests
Custom
Admins
API Management Overview
API Management
Group
API
Policy
Frontend Backend Api
/path https://~
https://<APIM Name>.azure-api.net
アクセス制御
Developer(User)
N:N
Operations
In
Out
Err
Policy
N:N
Developer Portal
Nextscape Inc. 10
API
(Backend)
(Publisher)
Client
(FrontEnd)
(Consumer)
Products(製品)
N:N
Subscription
API:
API Managementから到達できるAPIであればなんでも登録
できる。まずはここへ API を登録するところからスタート。
PolicyではRequest/Response/Errorに対して処理をC#で書
くことができる。
11. Developers Guests
Custom
Admins
API Management Overview
API Management
Group
API
Policy
Frontend Backend Api
/path https://~
https://<APIM Name>.azure-api.net
アクセス制御
Developer(User)
N:N
Operations
In
Out
Err
Policy
N:N
Developer Portal
Nextscape Inc. 11
API
(Backend)
(Publisher)
Client
(FrontEnd)
(Consumer)
Products(製品)
N:N
Subscription
Products(製品/成果物):
docsでは「成果物」もしくは「製品」と記載されている。
Portalでは「製品」となっているので注意。
APIに対してアクセス制御を行うのが主な役割。
APIと成果物はN:Nの関係性。APIは複数のProductsに登録が
できる。
12. Developers Guests
Custom
Admins
API Management Overview
API Management
Group
API
Policy
Frontend Backend Api
/path https://~
https://<APIM Name>.azure-api.net
アクセス制御
Developer(User)
N:N
Operations
In
Out
Err
Policy
N:N
Developer Portal
Nextscape Inc. 12
API
(Backend)
(Publisher)
Client
(FrontEnd)
(Consumer)
Products(製品)
N:N
Group:
Developerは複数の(Custom)グループに所属することがで
きる。ユーザー登録したDeveloperは必ずDevelopersグループ
に所属する。(ユーザー登録はいろんなシナリオで可能)
Productsのアクセス制御にGroupを登録することで、その
Groupに所属する開発者はその成果物を使用することができる
ようになる。(※Subscription使用による例外あり)
GroupとProductsはN:Nで紐づけることができる。
Subscription
13. Developers Guests
Custom
Admins
API Management Overview
API Management
Group
API
Policy
Frontend Backend Api
/path https://~
https://<APIM Name>.azure-api.net
アクセス制御
Developer(User)
N:N
Operations
In
Out
Err
Policy
N:N
Developer Portal
Nextscape Inc. 13
API
(Backend)
(Publisher)
Client
(FrontEnd)
(Consumer)
Products(製品)
N:N
Policyでできること(やること)の代表格
セキュリティ&アクセス制限
• API キー、JWT トークン、証明書、その他の資格情報を検証
• 使用量クォータとレート制限を適用
• IPアドレスやユーザーIDで接続を制限・スロットリング
キャッシュ
• Backend APIのResponseをキャッシュ
その他
• Request/Reponseログを転送
• 外部サービスをHttpで呼び出し
Subscription
Policy:
PolicyはBackend APIへRequestを投げる前後に処理を入れることができる。処理
はC#で実装する。
PolicyはBackend APIが公開する複数の操作(Operation)ごとに設定もできるし、
Backend API全てに共通の設定もできるなど、スコープが4段階ある。
(操作の例: /id)
実に多彩な処理の実装が可能。テンプレートもあるが、外部にReqeustを投げるこ
とができるので独自実装を頑張ればかなりのことができる。
14. Developers Guests
Custom
Admins
API Management Overview
API Management
Group
API
Policy
Frontend Backend Api
/path https://~
https://<APIM Name>.azure-api.net
アクセス制御
Developer(User)
N:N
Operations
In
Out
Err
Policy
N:N
Developer Portal
Nextscape Inc. 14
API
(Backend)
(Publisher)
Client
(FrontEnd)
(Consumer)
Products(製品)
N:N
Policyによるアクセス制限:
ProductsにもPolicyが設定できる。API単位より
上のスコープでの設定と思えばOK。
例えば使用量上限があるプランのAPI群を公開し
たい場合、そのプラン用の成果物を作成して使用
量クォータによる制限のPolicy実装をここに設定
することになる。
Subscription
アクセス制御:
アクセス制御はProductsとグループを紐づけること
で可能となる。
ここでいうアクセス制御とは、Developer(User)に
対してのものであることに注意。(APIを外部から使
用するClientに対する制御ではない)
15. Developers Guests
Custom
Admins
API Management Overview
API Management
Group
API
Policy
Frontend Backend Api
/path https://~
https://<APIM Name>.azure-api.net
アクセス制御
Developer(User)
N:N
Operations
In
Out
Err
Policy
N:N
Developer Portal
Nextscape Inc. 15
API
(Backend)
(Publisher)
Client
(FrontEnd)
(Consumer)
Products(製品)
N:N
Subscription:
俗にいうAPIキー。このキーをHeaderに入れないと
Requestが失敗する。 ProductsとDeveloperを紐
づけた設定の場合、Developer(User)からの利用許
諾の申請を必須とすることができる。
【重要Update】
従来、SubscriptionはProductsとDeveloper
を紐づけなければならなかったが、大きな仕
様追加がある。詳しくは「サブスクリプショ
ン」を参照
Subscription
46. ユーザー(Developer) と Group
• Docsにおけるユーザーとは、Azure API Managementで公開された API を使用する開発者
(Developer)のこと
• ユーザーとGroupはN:Nで紐づけることができる
• Group は Products とN:Nで紐づけることで開発者へのAPI公開をまとめて制御する
Group
アクセス制御
Products(製品)
アクセス制御
GroupA
GroupB
API
API
API
API
API
ユーザー(Developer)
全部のAPI使用可
下2つのAPIのみ
使用可
Nextscape Inc. 46
167. API Management のエラー処理
Nextscape Inc. 169
• API Mamagementでいうエラーは、Policyで発生したエラーと、Backend API
で発生したエラーと二種類あることを意識しておくこと
Policy
In
Out
Err
API
(Backend)
(Publisher)
Client
(FrontEnd)
(Consumer)
Backend
BackendAPIのResponseが
4xx, 5xxの場合
<outbound>でエラーハン
ドリング
PolicyがエラーをThrowの場合
<on-error>でハンドリング
API Management
216. Nextscape Inc. 218
• Open API 3.0形式を選んだ場合、こんな内容ファイルがダウンロードされる
API の Export / Import
{
"openapi": "3.0.1",
"info": {
"title": "Echo API",
"version": ""
},
"servers": [
{
“url”: "https:// .azure-api.net/echo"
}
],
"paths": {
"/resource": {
"get": {
"summary": "Retrieve resource",
"description": "A demonstration of a GET call on a sa
mple resource. It is handled by an "echo" backend which returns a r
esponse equal to the request (the supplied headers and body are being
returned as received).",
"operationId": "retrieve-resource",
"parameters": [
{
"name": "param1",