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

目次

概要

  • Financial API (FAPI)の「Read and Write API用セキュリティ・プロファイル」
  • 金融データへのトランザクション・アクセスに適したOAuthプロファイル

※ この項は、ドラフト 4 を参考にして作成。

要約

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

フロー

response_type

OpenID ConnectHybrid Flow

  • code id_token
  • code id_token token

IDトークン

  • JWS署名(必須)
    • ES256(ECDSA using P-256 and SHA-256, Recommended+)
    • PS256(RSASSA-PSS using SHA-256 and MGF1 with SHA-256, Optional)
  • JWE暗号化(すべき)
  • 分離トークン
    • 認可応答が改ざんされていないことを検証。
    • クライアントは、s_hash値を検証する。

s_hash

state の ハッシュ値。

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

request or request_uri

通信

  • 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要素以上を用いてユーザー認証をする。

トークン種類

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

  • 対象
    • code
    • token
      • access_token
      • refresh_token

役割

Authorization Server

認証・認可

クライアント認証

redirect_uri

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

code, token

追加の機能

  • Request
    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
  • Response(正常)
    上記のResponseのaudがclient_id、
    Request の iss, aud = Response の aud, iss と反転。
    HTTP/1.1 201 Created
    Date: Tue, 2 May 2017 15:22:31 GMT
    Content-Type: application/json
    
    {
        'iss':'https://as.example.com/',
        'aud':'s6BhdRkqt3',
        'request_uri':'urn:example:MTAyODAK',
        'exp':1493738581
    }
  • Response(異常)
    • 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からの要求数が上限を超えた場合。

Client

Confidentialクライアント

Publicクライアント

HTTP

Part 1要件を遵守。

Resource Server

HTTP

Part 1要件を遵守。

Accessトークン

記名式トークンの作成と使用。

セキュリティに関する考慮事項

考察

プロファイルの識別方法

特に問題無いが、既存の(クライアント認証無しの)Flowは拒否しないといけない?
OpenID Connectのように、「scope="* openid *"」などの識別方法が提要されていないため)

参考


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


トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2018-10-10 (水) 15:41:25 (8d)