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

公開日: : 最終更新日: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;
    }
}

関連記事

AdMob,Nendメディエーション時の優先順位

先日リリースしたアプリでは勉強を兼ねて、 AdMob+Nendでのメディエーション広告を実装し

記事を読む

Xcode標準テンプレート

Xcodeで新規Projectを作成した時にテンプレートを選ぶことが出来る。 「Choose a

記事を読む

no image

【XAML/VB.NET】XAMLファイルを帳票フォーマットとして使用する

掲題について。結論としてはFixedPageをルートとするXAMLファイルを XamlReader

記事を読む

no image

シングルボードコンピュータの動作温度について

Raspberry Pi 3 で屋外用のIoT機器を作成できないかと調べていたが、どうやらRaspb

記事を読む

Xamarin.Forms で NavigationPage を PushModalAsync すると例外が発生するときがある

Forms 2.3.4.231 Mapコントロールがあるページで、NavigationPage

記事を読む

Minnow Board Turbot + Windows 10 IoT Core をSSD上で動作させる

MinnowBoard は SATAが搭載されているので、SSDなどが利用できる。 通常はSDカード

記事を読む

no image

FixedDocumentの印刷およびXPS形式での保存

こんにちは。 以前、XAMLファイルを帳票テンプレートとして動的ロードする記事を掲載しました。

記事を読む

【ストアアプリ】画面遷移の基本①

こんにちは。 Windowsストアアプリをぼちぼち触り始めています。 WindowsRuntim

記事を読む

WordPressでスパムコメント対策

WordPressのスパムコメント対策を行ったのでメモ。 標準でAkismetがインストール済み(

記事を読む

no image

【Xcode】Capabilities全項目【v6.1時点】

Capabilitiesの各項目が何を示しているのか よくわからなかった、かつ日本語のサイトが少な

記事を読む

Message

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

PAGE TOP ↑