tech.guitarrapc.cóm

Technical updates

PowerShell も Windows Store Apps 同様に Windows.Security.Credentials namespace を使って認証情報を管理できるようにしてみる

以前、P/InvokeしてWindows Credential ManagerでPowerShellの認証情報を格納したり取得する簡単なモジュールを紹介しました。

https://tech.guitarrapc.com/entry/2014/03/13/062713

https://github.com/guitarrapc/WinCredManager

実際これは、valentiaを初めとして、認証を必要とするモジュールで使っています。

もっといい方法ないかなぁと、Windows Store Appsはどうしてるか調べていたところ、Windows.Security.Credentials namespaceを使った方法がスタンダードなようですね。

今回は、PowerShellでWindows.Security.Credentialsを使って認証情報を格納する方法を見てみましょう。

どこに保持されるの?

資格情報マネージャー(Windows Credential Manager) にある、Web資格情報(Web Credential) です。

以前作成したものが対象にしていたのはWindows Credentialsだったので、ここは違いますね。

image

さようなら P/Invoke

けた違いに書きやすくなりました。

例えば、現在設定されている一覧を取得するなら2行で済みます。

https://gist.github.com/guitarrapc/336bfc9301bd4f368cbd

もちろん、追加も削除も簡単です。便利ですね。

モジュールにして使いやすくする

PowerShellの認証型はPSCredentialです。

一方で、Windows.Security.Credentials名前空間ではWindows.Security.Credentialsを利用します。型が違うのでコンバーターとかさくっと作ればokです。

ということで、モジュールです。

https://github.com/guitarrapc/WindowsCredentialVault

image

関数一覧

Configを一応用意していますが、使ってないので除いておきます。

CommandType Name                                Version Source
----------- ----                                ------- ------
Function    ConvertFrom-PasswordCredential      1.0.0   WindowsCredentialVault
Function    ConvertTo-PasswordCredential        1.0.0   WindowsCredentialVault
Function    Get-WindowsCredential               1.0.0   WindowsCredentialVault
Function    Remove-WindowsCredential            1.0.0   WindowsCredentialVault
Function    Set-WindowsCredential               1.0.0   WindowsCredentialVault
Function    Test-WindowsCredential              1.0.0   WindowsCredentialVault

Get/Remove/Set/Testがそろっているので、大体やりたいことはできると思います。ReadMeに使い方の説明を書いておいたのでどうぞ。

まとめ

既存の差し替え検討してもいいぐらいには使いやすかったのでいいですね。