マイクロソフト系技術情報 Wiki」は、「Open棟梁Project」,「OSSコンソーシアム .NET開発基盤部会」によって運営されています。

目次

概要

  • Financial API (FAPI)の「Read and Write API用セキュリティ・プロファイル」
  • 金融データへのトランザクション・アクセスに適したOAuthプロファイル
    • OpenID Connect(OIDC)を使用して顧客(ユーザ)を識別
    • トークンを使用して、エンドポイントから保護データを読取
    • エンドポイントは、JSONデータを提供するREST API

※ ドラフト 4 を参考にして作成。その後、ドラフト 6 を再度完読して加筆・修正。

要約

  • 送信者・受信者・メッセージ認証を強化
  • 以下の攻撃に対するコントロールを規定
    • 認可要求の改ざん
    • コードインジェクション
    • 状態インジェクション
    • トークン要求フィッシング
    • 認可応答の改ざん

フロー

このプロファイルを簡単に説明すると、以下のようになる。

response_type

request or request_uri

IDトークン

JWT形式

  • JWS署名
    • ES256(ECDSA using P-256 and SHA-256, Recommended+)
    • PS256(RSASSA-PSS using SHA-256 and MGF1 with SHA-256, Optional)
  • JWE暗号化
    アルゴリズムの指定は無し。

追加クレーム

切り離された署名

  • 認可レスポンスが改ざんされていないことを検証。

の値を検証する。

    • state 値のASCII表現のオクテットのハッシュの左端の半分をbase64urlエンコーディング
    • ハッシュはIDトークンのJOSEヘッダのalgパラメタで使用されるアルゴリズム。
  • 例:algがHS512の場合
    • state値をASCIIエンコードし、
    • SHA-512でハッシュ化し、
    • 左端の256ビットを切り出し、
    • base64urlエンコードする。
  • この代替に「JARM」と言う仕様もある。

通信

SSL/TLS

  • TLSバージョン1.2以降
  • TLSサーバ証明書チェック
  • 暗号スイート
    • TLS_DHE_RSA_WITH_AES_128_GCM_SHA256
    • TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256
    • TLS_DHE_RSA_WITH_AES_256_GCM_SHA384
    • TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384

redirect_uri

(完全一致)

認証

ユーザ

LoA 3

  • 特定される⾝元識別情報の信⽤度が「相当程度ある」。
  • パスワードだけではなく、2要素以上を用いてユーザー認証をする。

クライアント認証

  • Tokenエンドポイント(以下の何れかが必要)
    • JWT Client Assertion(private_key_jwt)
    • MTLS」(「OAUTB」の場合は?以下のように書かれているため、「MTLS」を使用するのかも。

      FAPIクライアントが「MTLS」または「OAUTB」を使用する場合、認証コードはTLSチャネルにバインドされます。

トークン種類

記名式トークン(Proof-of-possession Token)

対象

  • code
  • token
    • access_token
    • refresh_token

紐付け(トークン・バインディング)

紐付け(トークン・バインディング)のために以下の何れかをサポートする必要がある。
(記名は、Resource Owner単位ではなくてClient単位)

役割

Authorization Server

先ずは、「FAPI Part 1 (Read Only API Security Profile)」に準拠。

認証・認可

クライアント認証

redirect_uri

  • 事前登録が必要
  • 認可リクエストに必須
  • 完全一致が必要

code, token

Client

先ずは、「FAPI Part 1 (Read Only API Security Profile)」に準拠。

共通

  • 紐付け(トークン・バインディング)のために以下の何れかをサポートする必要がある。

Confidentialクライアント

Publicクライアント

  • この代替として、
    • SPA系は、Hybrid Flowをサポート
    • Nativeは、S256のOAuth PKCEをサポート
      • 「ハッシュ関数」には、「S256」を使用する。
      • アプリケーション間通信」には、「Claimed Https Scheme URI Redirection」を使用する。
  • 各カギは、
    • SPA系は、クライアント端末ごとになる。
    • Nativeは、インストール(インスタンス)毎になる。

Resource Server

先ずは、「FAPI Part 1 (Read Only API Security Profile)」に準拠。

記名式トークン

Requestオブジェクト

  • これにより、Clientが指定したrequest_uriへの要求をサポートする必要が無い。
  • Requestオブジェクトの機密性のためにURIのエントロピーに依存しない。
  • request_uriは、以下の何れか。
  • なお、Requestオブジェクトには、すべてのパラメタを同梱する(※ expクレームを含める必要がある)。
  • OAuth2の認可リクエスト仕様で要求されている場合は、一致した重複を更に送信しても良い。

Request

どうも、この(specの)コンテキストからすると、

POST https://as.example.com/ros/ HTTP/1.1
Host: as.example.com
Content-Type: application/jws
Content-Length: 1288

eyJhbGciOiJSUzI1NiIsImtpZCI6ImsyYmRjIn0.ew0KICJpc3MiOiA
(... abbreviated for brevity ...)
zCYIb_NMXvtTIVc1jpspnTSD7xMbpL-2QgwUsAlMGzw

なので、request_uriの形式は、URNになるのが既定と考える。

Response

正常

HTTP/1.1 201 Created
Date: Tue, 2 May 2017 15:22:31 GMT
Content-Type: application/json

{
    'iss':'https://as.example.com/', // AuthZのID
    'aud':'s6BhdRkqt3', // ClientID
    'request_uri':'urn:example:MTAyODAK', // urn(暗号ランダム値)
    'exp':1493738581 // 有効期限(存続期間は短く、好ましくは一回限
}

異常

  • Authorization Required
    401 Unauthorized HTTP error
    署名検証が失敗した場合。
  • Invalid Request
    400 Bad Request HTTP error
    Requestが無効
  • Method Not Allowed
    405 Method Not Allowed HTTP error
    POST要求を使用しなかった場合
  • Request Entity Too Large
    413 Request Entity Too Large HTTP error
    要求サイズが上限を超える場合。
  • Too Many Requests
    429 Too Many Requests HTTP error
    ある期間にClientからの要求数が上限を超えた場合。

考察

プロファイルの識別方法

PublicクライアントのClient側実装

関連仕様

ただしOAuth2 / OIDCを除く。

FAPI Part 1 (Read Only API Security Profile)

JWT Secured Authorization Request (JAR)

JWT Secured Authorization Response Mode for OAuth 2.0 (JARM)

CIBA(Client Initiated Backchannel Authentication)

トークン・バインディング

MTLS: OAuth 2.0 Mutual TLS Client Authentication and Certificate Bound Access Tokens

OAUTB: OAuth 2.0 Token Binding

参考


Tags: :IT国際標準, :認証基盤, :クレームベース認証, :OAuth


トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2018-12-17 (月) 12:01:23 (10h)