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

目次

概要

詳細

ストア

https://github.com/abergs/fido2-net-lib/blob/master/fido2-net-lib/DevelopmentInMemoryStore.cs

  • DevelopmentInMemoryStore?をデモ実装にして、本体側は、IUserStore?的なInterfaceのみにした方が良さそう。
  • 一先ず、WebAuthnStore?を実装して、内部をUserStoreType? (mem, sql, ora, npg) でSwitch。

メンバ

  • storedUsers
    ConcurrentDictionary<string, User> storedUsers = new ConcurrentDictionary<string, User>();
  • User
    - string Name
    - byte[] Id
    - string DisplayName
  • storedCredentials
    List<StoredCredential> storedCredentials = new List<StoredCredential>();
  • StoredCredential?
    - byte[] UserId
    - PublicKeyCredentialDescriptor Descriptor
    - byte[] PublicKey
    - byte[] UserHandle
    - uint SignatureCounter
    - string CredType
    - DateTime RegDate
    - Guid AaGuid
  • PublicKeyCredentialDescriptor?
    - PublicKeyCredentialType? Type(enum)
    - byte[] Id
    - AuthenticatorTransport[] Transports

メソッド

  • User
    - User GetUser
    - User GetOrAddUser(string username, Func<User> addCallback)
    - List<User> GetUsersByCredentialIdAsync(byte[] credentialId)
  • StoredCredential?
    - List<StoredCredential> GetCredentialsByUser(User user)
    - List<StoredCredential> GetCredentialsByUserHandleAsync(byte[] userHandle)
    - StoredCredential GetCredentialById(byte[] id)
    - void AddCredentialToUser(User user, StoredCredential credential)
    - void UpdateCounter(byte[] credentialId, uint counter)

サーバ

https://github.com/abergs/fido2-net-lib/blob/master/Fido2Demo/Controller.cs

MakeCredentialOptions?

  1. Get from DB by username (ユーザ名でDBから取得)
    • user (in our example, auto create missing users)
      (ユーザ (この例では、見つからないユーザを自動作成))
    • keys (キー)

  2. Create options (MakeCredentialOptions?を作成)

  3. Temporarily store options, session/in-memory cache/redis/db
    (session/in-memory cache/redis/dbの一時保存オプション)

  4. return options to client
    (クライアントにMakeCredentialOptions?を返す)

MakeCredential?

  1. get the options we sent the clientt
    (クライアントに送信したMakeCredentialOptions?を取得)

  2. Create callback so that lib can verify credential id is unique to this user
    (信任状IDがこのユーザに固有であることをlibが検証できるようにcallbackを作成。)

  3. Verify and make the credentials
    (認証情報を確認して作成)

  4. Store the credentials in db
    (資格情報をdbに格納)

  5. return "ok" to the client
    (クライアントに "ok"を返す)

AssertionOptionsPost?

  1. Get from DB (DBから取得)
    • user (ユーザ)
    • registered credentials (登録済み資格情報)

  2. Create options (AssertionOptions?を作成)

  3. Temporarily store options, session/in-memory cache/redis/db
    (session/in-memory cache/redis/dbの一時保存オプション)

  4. Return options to client
    (クライアントにAssertionOptions?を返す)

MakeAssertion?

  1. Get the assertion options we sent the client
    (クライアントに送信したAssertionOptions?を取得)

  2. Get from database (DBから取得)
    • Registered credential (登録済み資格情報)
    • Credential counter (資格情報カウンタ)

  3. Create callback to check if userhandle owns the credentialId
    (userhandleがcredentialIdを所有しているかどうかを確認するcallbackを作成)

  4. Make the assertion
    (アサーションをする)

  5. Store the updated counter
    (更新したカウンタを保存)

  6. return OK to client
    (クライアントに "ok"を返す)

参考

abergs/fido2-net-lib

GitHub

abergs/fido2-net-lib: FIDO2 .NET library for FIDO2 / WebAuthn? Attestation and Assertion using .NET
https://github.com/abergs/fido2-net-lib

FIDO2 .NET lib Demo

Ideas Of Anders Åberg

Latest Posts
http://ideasof.andersaberg.com/

Open棟梁への実装結果

Library

https://github.com/OpenTouryoProject/MultiPurposeAuthSite/tree/develop/root/programs/CommonLibrary/Extensions/FIDO

  • DataProvider?.cs
  • WebAuthnHelper?.cs

HTPM + WebAPI

Script


Tags: :IT国際標準, :認証基盤


トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2019-03-19 (火) 10:02:00 (4d)