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

目次

概要

Finalを参照して記述。

  • IdP/STS(OP)は、SIOPとして動作する。

詳細

SIOP

機能

OpenID Connect Self-issued OP(SIOP)は、
端末上で動作して、IDトークンを発行することで、

  • SIOPが動作する端末自体の識別(端末認証)
  • 安全な端末情報の受け渡し(改ざんを検出可能)。

を実現する機能を提供すると言える。

Discovery

以下の Dynamic Discovery を得たかのように振る舞う。

 {
  "authorization_endpoint":
    "openid:",
  "issuer":
    "https://self-issued.me",
  "scopes_supported":
    ["openid", "profile", "email", "address", "phone"],
  "response_types_supported":
    ["id_token"],
  "subject_types_supported":
    ["pairwise"],
  "id_token_signing_alg_values_supported":
    ["RS256"],
  "request_object_signing_alg_values_supported":
    ["none", "RS256"]
 }

※ Discovery Process で入力された識別子が self-issued.me ドメインを含んでいた場合.

Registration

以下の Client Registration Response を得たかのように振る舞う。

  • client_id: Client の redirect_uri 値.
  • client_secret_expires_at : 0

認可リクエスト & レスポンス

認可リクエストの例

以下のRedirectレスポンスから認可リクエスト。

  • Authorization Endpoint
    カスタムURLスキーム(openid://)
  • パラメタ
    • REQUIRED
      • scope="* openid *"
      • response_type="id_token"
      • client_id は redirect_uri の値
  • OPTIONAL
    • claims
    • request
    • registration ★
    • id_token_hint ★
    • 他のパラメータも送ってもよい
 HTTP/1.1 302 Found
 Location: openid://?
   response_type=id_token
   &client_id=https%3A%2F%2Fclient.example.org%2Fcb
   &scope=openid%20profile
   &state=af0ifjsldkj
   &nonce=n-0S6_WzA2Mj
   &registration=%7B%22logo_uri%22%3A%22https%3A%2F%2Fclient.example.org%2Flogo.png%22%7D

※ 全体 URL 長は ASCII で 2048 文字を超えてはならない (MUST NOT).

認可レスポンスの例

通常のImplicit Flowと同じ。

IDトークン

差異

通常のImplicit Flowとの差異

  • sub
    sub_jwkの公開鍵の拇印のBase64urlエンコード(JWK Thumbprint参照)

 {
  "iss": "https://self-issued.me",
  "sub": "wBy8QvHbPzUnL0x63h13QqvUYcOur1X0cbQpPVRqX5k",
  "aud": "https://client.example.org/cb",
  "nonce": "n-0S6_WzA2Mj",
  "exp": 1311281970,
  "iat": 1311280970,
  "sub_jwk": {
    "kty":"RSA",
    "n": "0vx7agoebGcQSuuPiLJXZptN9nndrQmbXEps2aiAFbWhM78LhWx
    4cbbfAAtVT86zwu1RK7aPFFxuhDR1L6tSoc_BJECPebWKRXjBZCiFV4n3oknjhMs
    tn64tZ_2W-5JsGY4Hc5n9yBXArwl93lqt7_RN5w6Cf0h4QyQ5v-65YGjQR0_FDW2
    QvzqY368QQMicAtaSqzs8KJZgnYb9c7d0zgdAZHzu6qMQvRL5hajrn1n91CbOpbI
    SD08qNLyrdkt-bFTWhAI4vMQFh6WeZu0fM4lFd2NcRwr3XPksINHaQ-G_xBniIqb
    w0Ls1jF44-csFCur-kEgU8awapJzKnqDKgw",
    "e":"AQAB"
   }
 }

応用

この仕組み をどう応用していくか?がポイントになる。

Recruit ID

OAuth PKCEと併用(というよりOAuth PKCESIOPを併用して強化するイメージ)

  • Recruit IDは、OP(IdP/STS)だが、Self-Issued OP(オプション)を使う時にはRPになる。
  • Public Clientで認証する際に、Client Credentialを持てないPublic Client自体の認証が可能。
    (sub = 証明書の拇印の値をRecruit IDのアカウントとの紐付ける)
  • なお、秘密鍵は、Shared KeyChain?(iOSの証明書ストアらしい)で管理する。

・・・

参考


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


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