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

目次

概要

キーストアの分離

ユーザ

ユーザー毎に別のキーストアを持つ。

アプリ

さらにアプリ毎にコンテナが分割される。

シーケンス

共通

認証器の調査: IsSupportedAsync?()メソッド

if (await KeyCredentialManager.IsSupportedAsync() == false)
{
  ・・・

キーのストア&コンテナを開く: OpenAsync?()メソッド

当該ユーザ&アプリケーションのキーのストア&コンテナを開く。

// retrieve private key for sign
KeyCredentialRetrievalResult res =
  await KeyCredentialManager.OpenAsync("keyName");

if (res.Status == KeyCredentialStatus.Success)
{
  ・・・

登録

上記の結果が、

if (res.Status == KeyCredentialStatus.NotFound)
{
  ・・・

の場合、

キーペアを作成する: RequestCreateAsync?()メソッド

public keyを取得する: KeyCredential?.RetrievePublicKey?()メソッド

var userKey = keyCreationResult.Credential;
var publicKey = userKey.RetrievePublicKey();
var keyAttestationResult = await userKey.GetAttestationAsync();
IBuffer keyAttestation = null;
IBuffer certificateChain = null;
bool keyAttesttionIncluded = false;
bool keyAttestationCanBeRetrievedLAter = false;

KeyCredentialAttestationResult keyAttestationResult = await userKey.GetAttestationAsync();
KeyCredentialAttestationStatus keyAttestationRetryType = 0;

if (keyAttestationResult.Status == KeyCredentialAttestationStatus.Success)
{
    keyAttestationIncluded = true;
    keyAttestation = keyAttestationResult.AttestationBuffer;
    certificateChain = keyAttestationResult.CertificateChainBuffer;
}
else if (keyAttestationResult.Status == KeyCredentialAttestationStatus.TemporaryFailure)
{
    keyAttestationRetryType = KeyCredentialAttestationStatus.TemporaryFailure;
    keyAttestationCanBeRetrievedLater = true;
}
else if (keyAttestationResult.Status == KeyCredentialAttestationStatus.NotSupported)
{
    keyAttestationRetryType = KeyCredentialAttestationStatus.NotSupported;
    keyAttestationCanBeRetrievedLAter = true;
}

認証

上記の結果が、

if (res.Status == KeyCredentialStatus.Success)
{
  ・・・

の場合、

RequestSignAsync?()メソッド

登録後、この App に SignIn? する際には、PIN の入力や biometrics 認証を使って、この登録された private key を使ったデジタル署名 (RequestSignAsync?) が可能です。

その他

DeleteAsync?

private keyを削除する。

await KeyCredentialManager.DeleteAsync("keyName");

参考


Tags: :認証基盤


トップ   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS