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

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

関連記事

【iPhoneアプリ】自分のiPhoneへインストールする方法

自作のiPhoneアプリを自分のiPhone上で動作させたい場合の手順をメモ ・iOS Dev

記事を読む

【.NET Framework 4.6.1】MultiLineなTextBoxでCtrl+Aが使えない問題が解決(今更)

WinForms.NETなアプリケーションの標準TextBoxで、Multiline=Trueに設定

記事を読む

no image

【iPhoneアプリ】Nend広告の実装メモ

広告枠の作成 https://www.nend.net/ 審査前アプリのURL iPhon

記事を読む

【Cocos2d-x】iPhone実機でプロジェクトを動かすまで

Macを購入してCocos2d-xデビューしたが、 iPhone実機で動かすまでをメモ

記事を読む

【WPF/XAML】セパレータを縦にする

<Window x:Class="VerticalSeparator&q

記事を読む

no image

UWPでローカルにNoSQLデータベースを作成したい

LiteDBを使う CRUDの例 公式サンプルのとおりやるとデータソース指定のときに権限エ

記事を読む

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

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

記事を読む

【iPhoneアプリ】リリース手順〜審査完了後〜

前回からの続き。 中身が無いアプリだったのでリジェクトされると思いきや 審査に通ってしま

記事を読む

no image

macOSのVSTSビルドエージェント構築過程で、type initializeで例外が発生し接続に失敗する問題の対応

macOS Sierra (10.12.4) Deploy an agent on OSX Xa

記事を読む

Visual Studio Team Services ダッシュボードを自動更新する

Visual Studio Team Services のダッシュボードでプロジェクトや運用状況のサ

記事を読む

Message

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

PAGE TOP ↑