【ストアアプリ】資格情報の保存と読み込み

公開日: : 最終更新日:2015/10/20 Blog, Microsoft , ,

こんにちは。
Windowsストアアプリで資格情報をセキュアに保存する方法について。

PasswordVaultを使用します。
以下の例ではIDとパスワードのテキストボックスがあり、
Saveボタン押下時にIDとパスワードを紐づけて資格情報コンテナに保存します。

また、IDテキストボックスのロストフォーカス時に、
対象IDの資格情報が存在していればパスワードを復元します。
※Windows.Security.Credentials名前空間の参照追加が必要です。

<Grid Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">
    <Grid.RowDefinitions>
        <RowDefinition />
        <RowDefinition />
        <RowDefinition />
    </Grid.RowDefinitions>
    <TextBox Grid.Row="0" Name="txtID" Text="" VerticalAlignment="Center" LostFocus="txtID_LostFocus" />
    <TextBox Grid.Row="1" Name="txtPW" Text=""  VerticalAlignment="Center"/>
    <Grid Grid.Row="2">
        <Grid.ColumnDefinitions>
            <ColumnDefinition />
            <ColumnDefinition />
        </Grid.ColumnDefinitions>
        <Button Grid.Column="0" Name="btnSave" Content="Save" Click="btnSave_Click" />
    </Grid>
</Grid>
private static readonly string CREDENTIAL_RESOURCE = "THIS_APP_KEY";
private void btnSave_Click(object sender, RoutedEventArgs e)
{
    var id = txtID.Text;
    var pass = txtPW.Text;
    SavePassword(id, pass);
}

private void SavePassword(string argID, string argPW)
{
    PasswordVault vault = new PasswordVault();
    PasswordCredential credential = new PasswordCredential(CREDENTIAL_RESOURCE, argID, argPW);
    vault.Add(credential);
}

private void txtID_LostFocus(object sender, RoutedEventArgs e)
{
    var id = txtID.Text;
    var pass = LoadPassword(id);
    txtPW.Text = pass;
}

private string LoadPassword(string argID)
{
    PasswordVault vault = new PasswordVault();

    try
    {
        PasswordCredential credential = vault.Retrieve(CREDENTIAL_RESOURCE, argID);
        return credential.Password;
    }
    catch
    {
        return string.Empty;
    }
}

関連記事

no image

Microsoft Flow 入門

社内LT用

記事を読む

UWPでユニットテスト

ユニバーサルWindowsのアプリケーションプロジェクトおよびクラスライブラリプロジェクトのユニット

記事を読む

【iPhoneアプリ】リリース手順〜審査申し込み〜

初めてiPhoneアプリを作成したがリリース手順が 手元の参考書と全然違って困ったのでメモ。

記事を読む

no image

This project references NuGet package(s) that are missing on this computer.

.nugetフォルダが設定されているソリューションから一部プロジェクトのみを抜き出すと発生する。 N

記事を読む

no image

Windows 10 IoT 系の概要、エディション、入手方法などを一度整理

Windows 10 IoT にここ最近振り回されているので、ここまで解釈した内容にて、まとメモ 正

記事を読む

【WPF/XAML】テキストボックスをテキストエリアにする

XAMLのTextBoxをHTMLのTextAreaのように表示・動作させる方法 <

記事を読む

no image

Xamarin.Forms.Xaml名前空間のXAMLマークアップ拡張のメモ

MarkupExtensionsのメモ。あとで確認用 ArrayExtension Bindin

記事を読む

no image

【.NET】正規表現の復習

正規表現エンジン System.Text.RegularExpressions.Regexオブジェ

記事を読む

Visual Studio 2015 + PHP Tools for Visual Studio で App Service for Linux へデプロイ

発端はこれ。 https://social.msdn.microsoft.com/Forums/ja

記事を読む

画面設計デザイン時の無料画面イメージ作成ツール

画面デザイン全般に使っているツールを紹介。 Webアプリ作成時のワイヤーフレームや、 ス

記事を読む

Message

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

PAGE TOP ↑