UiPath製品群をプロキシ環境で使用するための環境設定手順 2022.4版

こんにちは。[UiPath Friendsコミュニティ](https://uipath-friends.doorkeeper.jp/)運営メンバの @masatomix です。
この記事はUiPathブログ発信チャレンジ2022サマーの5日目の記事です。

https://note.com/shumpei_w/n/n19383ce5abb1

昨日は [shuy](https://twitter.com/shuy_oooo)さんの記事、明日は[よしやんやん](https://twitter.com/myoshidan)さんの記事です。

https://qiita.com/shuy/items/c92affc3d7b2433dba89

---

今回は、下記のつぶやきについて。

<blockquote class="twitter-tweet"><p lang="ja" dir="ltr">いまどきのUiPathのプロキシ事情を調べよう<br><br>むかしみたいに、カオスじゃないといいな<a href="https://twitter.com/hashtag/UiPathFriends?src=hash&amp;ref_src=twsrc%5Etfw">#UiPathFriends</a></p>&mdash; Masatomi KINO (@masatomix) <a href="https://twitter.com/masatomix/status/1540239108315828226?ref_src=twsrc%5Etfw">June 24, 2022</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script> 

ってことで、このとき調べたことをまとめておきます。

ちなみに**むかしみたいなカオス**とは下記のはなしです。
UiPath 2019くらいのときに同じコトをまとめたことがありますが、クシャクシャでした、、。

- [UiPath製品群をプロキシ環境で使用するための環境設定手順(認証ありプロキシのケース) ](https://qiita.com/masatomix/items/1a48f97b4b1d5df45cf4)
- [UiPath製品群をプロキシ環境で使用するための環境設定(UiPath Enterprise版/認証なしプロキシのケース)](https://qiita.com/masatomix/items/43e691e7d47e54638984)
- [UiPath製品群をプロキシ環境で使用するための環境設定(UiPath Community版/認証なしプロキシのケース)](https://qiita.com/masatomix/items/5be2a61a594307f5979a)

2019年に書いた記事は、Community版とEnterprise版で分けて書いたけど、いまの仕組みだとそこは重要じゃなさそうで、ユーザモード/サービスモードどちらでインストールしたか、で分けて考えます。

さてさてまずは結論。


## TL;DR

クラウド版のOrchestrator(以下OC) と、PC上のUiPathは2022.4.3 にて確認。

- 認証ナシプロキシ
  - ユーザモード：○
    - インターネットオプションの設定を使って越えられる
  - サービスモード：○
    - ``%ProgramFiles%\UiPath\Studio\uipath.config`` へ設定を追記することで、越えられる。
- 認証アリプロキシ
  - ユーザモード：×
    - プロキシを越えることができない
  - サービスモード：△
    - Unattended Robot(以下UR)は、先の ``uipath.config`` への追記で、まあまあ実用的に使えそう
    - Attended Robot(以下AR)は、実用的に使うのは難しそう[^1] 。
      - トラブルシューティングセッションを使えば一時的に利用できるが。

[^1]: マシンキー + 対話型サインインができない(後述)ので、Attended Robot(以下AR)は実用的に使うのは難しそう。

まとめると https://docs.uipath.com/robot/lang-ja/v2022.4/docs/redirecting-robots-through-a-proxy-server は正しい :-)
ってコトがわかりました。

さて個別に説明していきます。

## その前に確認環境

稼働確認のために構築したテスト環境はこんな感じ。UiPathが動いてるPCは直接Internetからは遮断されていて、プロキシ経由の通信でないとダメな設定にしてみました。プロキシサーバは ``http://192.168.10.200:3128`` で立ててあって、場合によって認証アリナシを切り替えてテストしました。

![p004](https://imgur.com/nK5wunY.png)

一応ですが、通常Webブラウザでネットにアクセスするときは、

```
インターネットオプション >> 接続 >> LANの設定
```

ココで設定をすることで、プロキシ経由のアクセスができるようになります。

![p003](https://imgur.com/TPYpc7s.png)


## まずは認証ナシプロキシ

### ユーザモード

ユーザモードでインストールしたStudio(以下ST)/AR/URはいずれも、**OSのインターネットオプションの設定を参照**しているようなので、ブラウザでネット接続できれば問題ありません。 

>あ、ちなみに「**ユーザモードでインストールしたUiPath**」というのはインストーラで下記の2パタンの設定で入れたヤツのこと。
>
>カスタム >> 自分にのみインストール >> Automation Developer
>![p001](https://imgur.com/0Gpi3M1.png)
>
>カスタム >> 全てのユーザにインストール >> Automation Developer >> インストールの種類は「ユーザーモード」
>![p002](https://imgur.com/5V0mqBi.png)

さてさて疎通確認は、だいたい以下を行いました。

- 対話型サインイン/Client Credentialsのアクティベーション 
- STのパブリッシュ 
- nupkgのダウンロード 
- タスクトレイからの実行(AR的な実行) 
- Web画面からのジョブ実行(UR的な実行)

最初だけ、エビデンスを載っけておきます。


#### エビデンス

対話型サインインでアクティベーション、AR的な実行はOK
![p005](https://imgur.com/T2itL5H.png)

nupkgダウンロード もOK
![p006](https://imgur.com/sdk2YMM.png)

StudioからのPublishもOK
![p007](https://imgur.com/cCHrJob.png)

Studioでライブラリをダウンロードもできてる
![p008](https://imgur.com/WlBnOGq.png)

Client CredentialsによるアクティベーションOK
![p009](https://imgur.com/BvUkQ37.png)

UR的な実行OK.
![p010](https://imgur.com/jxwvxF8.png)

プロキシなし、ユーザモードは以上です。

### サービスモード

サービスモードの場合は、先ほどのインターネットオプションは参照しないみたいで、個別の設定ファイル``uipath.config``の設定を参照していました。
というわけで、``%ProgramFiles%\UiPath\Studio\uipath.config``  にプロキシの設定を書いてUiPathサービスの再起動を行いましたが、もろもろOKでした。


```xml
<webProxySettings >
    <add key="ProxyAddress" value="http://192.168.10.200:3128" />
    <add key="BypassLocalAddresses" value="True" />
    <add key="BypassList" value="server\.domain\.local$;www.google.com;192\.168\.\d{1,3}\.\d{1,3}" />
</webProxySettings >
```

いちおうですが、UiPathサービスの再起動というのはコレのことです。

![p11](https://imgur.com/EHjvEcs.png)


また、先の[リンク]( https://docs.uipath.com/robot/lang-ja/v2022.4/docs/redirecting-robots-through-a-proxy-server )を見てみると、よく会社で使われるプロキシを自動設定するファイル(pacファイル)の指定も可能なようですね。

プロキシなし、サービスモードは以上です。




## つづいて認証アリプロキシ

### ユーザモード

先の[リンク]( https://docs.uipath.com/robot/lang-ja/v2022.4/docs/redirecting-robots-through-a-proxy-server )を見る限り、**ユーザモードの場合は認証アリプロキシを越えられない**とのこと。残念。
[UiPath2019系の時はいけるパタンもあった](https://qiita.com/masatomix/items/1a48f97b4b1d5df45cf4)ので、もうすこし深追いすると越えられるのかもしれませんが、公式が無理っていってるんで、いったん調査はここまで。

### サービスモード

先の[リンク]( https://docs.uipath.com/robot/lang-ja/v2022.4/docs/redirecting-robots-through-a-proxy-server )を見る限り、サービスモードの場合は先ほどの``%ProgramFiles%\UiPath\Studio\uipath.config``  に認証プロキシの設定を書けば越えられるとのことで、実際可能でした(ココもUiPathサービスの再起動が必要です)。


認証プロキシが user01/user01 というID/Passを通す場合の例：
```xml
<webProxySettings >
    <add key="ProxyAddress" value="http://192.168.10.200:3128" />
    <add key="UserName" value="user01" />
    <add key="Password" value="user01" />
    <add key="Domain" value="" />
</webProxySettings >
```

ただし公式の説明を見ると

>  Robot Executor は基本認証メソッドを使用するプロキシ構成をサポートしていません。

とのこと。[Robot Executor](https://docs.uipath.com/robot/lang-ja/docs/robot-executor)の範囲がよくわからなかったのですが、

- マシンキーによるアクティベーション
- nupkgのダウンロード
- WEBからのジョブ起動

などはOKでした。 ようするに**UR的には実用的に使えそう**。
ただ、タスクトレイからの実行つまり**AR的につかいたい場合に必要な「対話型サインイン」ができない**ようです。

もうすこし詳しく書くと、サービスモードのUiPathはまずはマシンキー接続を行いますが、これだけだとユーザ(ロボ)特定ができずにライセンスが取得ができない、**いわゆるアイコンがオレンジ状態**となります。したがって、**タスクトレイから実行するには追加でサインインが必要**なのですが、やってみると下記の通りのエラーが。

 ![](https://pbs.twimg.com/media/FWQ8DJ2UEAEffQ4?format=png&name=900x900)

エラーメッセージに407とかでてますね。プロキシサーバが返してくる「HTTPレスポンスのステータスコード407(Proxy Authentication Required)」を処理できないようです[^2]。したがって**タスクトレイからの実行(ARとして使う)は不可能に見えますね。Studioもたぶん同様**かとおもいます。	

[^2]: 表示されている内容を見ると、OAuthの openid-configuration (OpenID Connect関連のURLを公開しているページの情報)の取得で407 Proxy Authentication Required 。おしいっ。



### トラブルシューティングセッションってのを設定すれば利用可能だが

まとめにもかきましたが、上記の状況で**対話型サインインができない問題を回避する方法**として「トラブルシューティングセッション」というのがあります。**トラブルシューティングセッションとは、いわゆるかつてのロボット特定ロジック**で、コレを設定するとライセンス取得のための**ロボット探索を、ログインしているWindowsアカウントで行ってくれる**ようになります。

なので、**認証プロキシ上でARとして利用するには、サービスモードでかつトラブルシューティングセッションを使用すれば、可能です**。

さてトラブルシューティングセッションの設定方法ですが


```
テナント >> 監視 >> セクション:無人セッション >> 該当ロボットの右部メニュー >> 「トラブルシューティングセッションを設定」
```

で表示されるダイアログで、設定することが可能です。下記のトグルするボタンを「Enabled」にしてください。

![](https://pbs.twimg.com/media/FWRDxExUAAAnieN?format=jpg&name=medium)

これで上記のキャプチャのようにライセンスを取得することができ、AR的な利用が可能となります。
ただトラブルシューティングセッションは、**タイムアウト時間を設定するなどあくまで緊急措置(？) ぽい位置づけ**で、これを日々利用する前提はちょっと無理がありそうです。

というわけで、認証アリプロキシ環境では、やっぱりAR利用は難しいってことになりそうです。



## まとめ

最初に書いたモノのの再掲ですが、

- 認証ナシプロキシ
  - ユーザモード：○
    - インターネットオプションの設定を使って越えられる
  - サービスモード：○
    - ``%ProgramFiles%\UiPath\Studio\uipath.config`` へ設定を追記することで、越えられる。
- 認証アリプロキシ
  - ユーザモード：×
    - プロキシを越えることができない
  - サービスモード：△
    - Unattended Robot(以下UR)は、先の ``uipath.config`` への追記で、まあまあ実用的に使えそう
    - Attended Robot(以下AR)は、トラブルシューティングセッションを使えばうまくいくが、定常的に使うモノではなさそう。

ちなみにプロキシの設定ですが「設定を書き換えたのに反映されない」ケースが何度かありました。インターネットオプションでプロキシの設定をOFFにしたのに相変わらずプロキシに行っちゃうみたいな[^3]。ヘンだなーと思いつつPCを再起動したら正しくなったりしたので、場合によってはPCを再起動してみてください。

[^3]: もしかしたらUiPathによらずOS全体でかもしれません。



以上、お疲れさまでした！


## 関連リンク

- [Robot をプロキシ サーバー経由でリダイレクトする]( https://docs.uipath.com/robot/lang-ja/v2022.4/docs/redirecting-robots-through-a-proxy-server ) 2019系のときはまとまったサイトがありませんでしたが、結論いうとココの説明でほとんど事足りる内容でした
- [Studio が接続するサービス](https://docs.uipath.com/installation-and-upgrade/lang-ja/v2022.4/docs/services-studio-connects-to) Studioはネット上のこの辺にアクセスしているようですね。
- [ロボットが接続するサービス ](https://docs.uipath.com/installation-and-upgrade/lang-ja/v2022.4/docs/services-the-robot-connects-to)Robotはネット上のこの辺にアクセスしているようですね。

UiPathの2019版までの仕様はこちら：

- [UiPath製品群をプロキシ環境で使用するための環境設定手順(認証ありプロキシのケース) ](https://qiita.com/masatomix/items/1a48f97b4b1d5df45cf4)
- [UiPath製品群をプロキシ環境で使用するための環境設定(UiPath Enterprise版/認証なしプロキシのケース)](https://qiita.com/masatomix/items/43e691e7d47e54638984)
- [UiPath製品群をプロキシ環境で使用するための環境設定(UiPath Community版/認証なしプロキシのケース)](https://qiita.com/masatomix/items/5be2a61a594307f5979a)