自動構成スクリプトを利用した認証プロキシへの対応方法

タイトルの通りなのですが、認証プロキシを通じて外部ネットワークに接続している場合の対応方法がわかりません。

ブラウザでは、
インターネットオプション->接続->LANの設定(L)->自動構成->自動構成スクリプトを使用する(S)にチェック->アドレス®に.pacファイルのアドレスを入力
して外部環境に接続しています。
接続の際はユーザIDとパスワードも必要です。
IEは毎回認証を求められることはありませんがChromeやFirefoxだと毎回認証を求められます。
おそらく、IEはWindowsの資格情報を利用しているのだと思いますが確証はありません。

Studioの方ではManagePackageを通じてmyget.orgに保管されているActivities Packageのダウンロード、インストールが出来ているようです。
この時は特にユーザID・PWの設定などせず利用できます。インストール時に設定をしたわけでもありません。

しかし、アクティベーションやRobotの方では通信できていないようで、Robotの方のログをのぞいてみると
(407)プロキシ認証が必要です。
とのログが吐かれていました。

アクティベーションの方はオンラインアクティベーションではなくオフラインアクティベーションでアクティベートできますが、
Robotの方は、シナリオが依存しているバージョンのActivities Packageがローカルにない場合、動作自体が出来ません。
自分でブラウザを通じ、シナリオに対応したバージョンのActivities Packageをmyget.orgからダウンロード、programfiles(x86)\uipath\studio\packagesに格納する必要があり非常に面倒です。

Studioの方で通信できている以上、何かしらやりようがあるのでしょうがその方法がさっぱりわかりません。

.configファイルをいじる方法等も思いつきましたが当方の知識不足でどこを変えればいいか、その結果どう影響するかが分からず…
Fiddlerや認証プロキシ爆発しろなどのフリーウェアを使う方法は会社の規則上手続きが必要です。

設定ファイルを弄る等の方法で対応できないのでしょうか?
よろしくお願いします。

1 Like

Activities Packageのダウンロードは基本的にNuGetを使用している筈なのですが、自動構成スクリプトの認証方法についてはいまいち情報がないですね……。

一応、 C:\Program Files (x86)\UiPath\Studio に、NuGet.Config があるので、もしかしたらここにプロキシの認証情報だけでも設定しておくと使える……かもしれません。ちょっと検証できる環境がないので確認できませんが。

NuGet.Configに認証情報を書き出す場合、nuget.exeをMicrosoftからダウンロードしてきて、Nuget.Configと同じフォルダに配置し、コマンドを使って登録することになります。

必要なコマンドは以下のblog等がわかりやすいかな、と思います。これでhttp_proxyを設定せずに動くのかどうか、というのは何とも言えないのですが……。

https://blog.okazuki.jp/entry/2015/08/04/171520

2 Likes

Honoka様

ありがとうございます。
やはりそれしか方法無いのですかね…configファイルにユーザ名パス書き出すのは抵抗しかありませんでした…(定期的に強制PW変更があるので)
理想としては起動時にユーザー認証ポップアップが表示されて認証以後通信してほしいんですけどね。

逆にStudioの方はなぜ通信できているか等お分かりいただけますでしょうか?
Studioの方はプロキシを経由して通信できているようです。
IEの設定とWindowsの資格情報を読み取れているのかなと考えましたが詳細は不明です。

しかし、日本企業だとこんな事例珍しくないように思えますが皆さんどうやって対処しているんでしょうね…

Honoka様
試してみましたが駄目でした。
UiPathのNuget.Config以外にも、ユーザーのNuget.config、コンピュータのNuget.configを書き換えましたが相も変わらず直接myget.orgに通信を試みているようです。当然弾くのでダウンロードは不可能です。

古いバージョンの物を使用したのですが、それにしたってプロキシのアドレスとポートは暗号化されているわけでもないので通信くらいは試みてくれるとおもいましたが駄目なようです…

英語になりますが、以下の手順でお試しして頂けますか

基本的にステップが3つあります:

ブラウザーの設定: ブラウザー上で設定する
ロボットの設定: StudioのUiPath.Service.Host.exe.config設定ファイルで設定する
NuGetの設定: AppData\Roaming\NuGetにある設定ファイルで設定する

Antoine_Chaussin様

施行済ですが、文法がわからずもしかしたら間違えてるかもしれません。
ちなみにその記事は左上のEnglishをJapaneseにすれば日本語化できます。
下記の物をconfigファイルに記述し施行しましたがうまくいきませんでした。

<system.net>
<defaultProxy  enabled="true" useDefaultCredentials="true">
<proxy scriptLocation="http://XXX/自動構成スクリプト.pac(イントラ上)"
            usesystemdefault="true"
/>  
</defaultProxy>
</system.net>

Windowsの資格情報にはユーザIDとPWが保持されているのでもしうまくいけば直で行けると思ったのですが…(IEも同じ情報を読み込んでいます。PWが変わった場合はダイアログが出て新しいPWを入力し資格情報を保存すれば次にPWが変わるまで使えます)

.pacを読み解いてアドレスを特定し直で書くことも可能ですが、会社の規定上それが許されるかも疑問です。

Nugetの方は上記で実施したものですが、この資料だとユーザ認証が必要なプロキシに対する対応策が書かれていないのです。
その方法はHonoka様がおっしゃっているようにNuGet.exeを利用しコマンドをたたいてNuGet.configを弄る事ですね。
アドレスを特定し直接アドレスとポート番号を書き込みましたが駄目でした。

追記:
通りました。
コンピュータ上のNuGet.configを弄っただけです。
Robotを再起動させておらず反映されてなかったという超初歩的な理由でした。
ロボットはタスクマネージャから切るのではなくサービスから切らないとダメなので次にこの問題ぶち当たった方注意してください…

ただそれはそれで問題があります。
Windowsの資格情報を削除し、インターネットオプションの設定もプロキシ利用しない設定(つまりIEではネットは使えない)状態にしたのですが、プロキシサーバのアドレスとポート番号のみで通信できてしまいました。
いったいどこから資格情報とってきてるんでしょう…謎です。

Honoka様
UiPath/Studioの方のNuGet.configを弄りましたが駄目でした。
SysWOW64に格納されている方いじらないとダメみたいですね。
Studioのフォルダに格納されている方はmyget.orgのURLをとってくるくらいしか使われて無いかもしれません。

通信こそできましたが本来動的に決定されるプロキシサーバの内の一つを固定で指定していることになるので少々心配があります。
自動構成スクリプト、対応していないんですかねぇ。
更にユーザ名とPWを指定した覚えもないのに通信できてしまったのもそれはそれで謎でした。

1 Like