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

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

【UWP】矢印キーでのフォーカス移動

FocusManagerで上下左右のフォーカス遷移が出来るので、その仕組みを利用してやるビヘイビアを

記事を読む

Xamarin.Forms出力バイナリのメモ

iOS -> .ipa, Android -> .apk ipaファイル作成方法 ソリュー

記事を読む

no image

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

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

記事を読む

【ストアアプリ】トースト通知の基本

Windowsストアアプリ開発での基本。 トースト通知について投稿します。 Pack

記事を読む

VisualStudio2015でiOSアプリケーション開発

こんにちは。 Windows10にアップグレードしました。 VisualStudioも201

記事を読む

no image

Windows 10 IoT Core の 製品化メモ

概念実証(Proof of concept)を終了し、製品化を行いたい場合のステップ サインア

記事を読む

no image

【VB.NET】async および await キーワードの使用

.NET Framework4.5(C#5.0, VB11.0)の新機能 Async/Awai

記事を読む

no image

KeyboardNavigation以外でFocusVisualStyleを表示させる

WPFです。 結論としてはリフレクションで無理やりやれなくはなさそうという感じ。 元ネタはMSDN

記事を読む

【iPhoneアプリ】開発者登録手順(iOS Developer Program) その1

iPhoneアプリの作成からリリースまでの一通りの流れを体験したかったため、 簡単なiPhon

記事を読む

no image

TFS2013ExpressでService Unavailable 503

【現象】 TFSつながらない。ブラウザからのホームもVisualStudioのチームエクスプローラ

記事を読む

Message

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

PAGE TOP ↑