55
57

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

【UiPath】ログイン情報(ユーザーID/パスワード)の持たせ方

Last updated at Posted at 2018-07-01

業務アプリケーションの操作を自動化する際に避けて通れないのが、
そのアプリケーションへのログイン情報(ユーザーID/パスワード)をどこから持ってくるか?、という話。

Unattended robotなら、Orchestrator内のCredential型Assetに持たせといて、
オートメーション内でGet credentialで取ってくればいいんだけど、Attended robotはそうもいかない。

  • オートメーション起動時にダイアログ出して人間に入れさせる → ダサい。めんどくさい。
  • ローカルファイルに書いといて、Read text file → ええっ、パスワードを平文ファイルに書くの?
  • オートメーションのType intoのプロパティにべた書き → オートメーションが流出したら最悪。

というわけで色々悩んだのですが、UiPath AcademyでWindows資格情報の話が出たのをふと思い出しました。

Windows資格情報に持たせる

Windowsには資格情報マネージャーという、ログイン情報をセキュアに保持する仕組みがあるので
そこに各アプリケーションのログイン情報を持たせておいて、オートメーションの中で取ってくるのが
今考えられるベストな方法だと思います。
これならPCにログインする人ごとにユーザーID/パスワードを変えられるしね。

というわけで、Windows資格情報を使ってQiitaにログインさせてみたいと思います。

Windows(汎用)資格情報の設定

①コントロールパネル → 資格情報マネージャー
Credential1.png

②Windows資格情報コンテナ → 汎用資格情報の追加
Credential2.png

③資格情報(ログイン情報)の入力
1行目は「インターネットまたはネットワークのアドレス」とありますが、別にURLである必要は無く、
わかりやすい任意の名前を付ければ良いです。UiPathはこの名前でログイン情報を取ってきます。
今回の例では、"Qiita-Login"とします。
Credential3.png

④汎用資格情報として登録されました。
Credential4.png

Windows資格情報用パッケージのインストール

UiPathのデフォルト機能にはWindows資格情報を取ってくるアクティビティは含まれていないので、
Package ManagerからUiPath.Credentials.Activitiesを追加インストールします。
Install.png

インストールすると、System > Credentialsの下に専用アクティビティが追加されます。
activities.png

これで準備完了。

オートメーションからログイン情報を取得

Windows資格情報からQiitaへのログイン情報を取得し、Qiitaにログインするところまでやってみます。
Flowchart.png

Windows資格情報を取得するアクティビティはGet "Secure" Credential。
(※似た名前でGet Credentialもありますが、こっちはAsset用で別物なので注意)
Targetには資格情報につけた名前を指定、ユーザーID/パスワードが返ってくるので、それぞれ変数に格納。
GetCredential.png Property.png

で、Type intoにそれぞれユーザーID/パスワードを設定すると、パスワード側で警告が出る。
Sequence.png

ええと、「'System.Security.SecureString'の値を'String'に変換できません」とな。
実はGet Secure Credentialから返ってくるパスワードはSecureStringという専用の型に入ってくるので、
そのままではType intoアクティビティが食えないのです。
Variables.png

困った時はUiPath Communityを検索・・・あったあった。
SecureString → Stringへの変換は

new System.Net.NetworkCredential(string.Empty, パスワード変数).Password

でいいのか。strPassword.ToString()じゃダメらしい。

というわけで、変換したものをType intoに食わせて・・・
Convert.png

実行。うんうん、うまくいった。
execute.gif


今回はここまで。

2018/07/03
SecureString → Stringへの変換ですが、@hidechaさんのアドバイスにより、Type intoの代わりに
Type Secure Textアクティビティを使う事で、変換不要でそのままSecureString変数を入力できました。
こっちの方が全然楽ですね。いや恥ずかしい。
TypeSecure.png SecureProperty.png

@hidechaさんありがとうございました!

55
57
5

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
55
57

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?