きかっけ
大学のVPNがCiscoのAnyConnectを使用しているのですが、公式のクライアントを使用するとローカルの接続も禁止されてしまいます。NASやプリンターに接続できなくなり、実用に耐えないレベルでした。そのため、OpenConnect GUIを使用していたのですが、2月からSSOに切り替わり使用できなくなってしまいました。
OpenConnect GUIでの症状と原因
ログを見ると
Please complete the authentication process in the AnyConnect Login window.
No SSO handler
Failed to complete authentication
となってしまっています。
どうやらOpenConnect本体はSSOに対応しているようですが、OpenConnect GUIがSSOに対応していないため発生しているようです。
SSOに必要な機能を提供するものとしてopenconnect-ssoやoc-ssoがあります。openconnect-ssoはWindowsもギリギリ対応しているっぽさそうでしたが、古そうだったので使用しませんでした。oc-ssoは比較的新しくシンプルですが、Windowsには非対応です。
Pythonスクリプトと使い方
そこで、oc-ssoを元にしつつ、Windowsでも使えるようにChatGPTに改造させました。完全にChatGPT任せなうえに、ロクにデバッグもしてないので自己責任でお願いします。
ダウンロードは下から
oc-sso-win.py
管理者権限でPowerShellを開き
python oc-sso-win.py https://example.com --openconnect "C:\Program Files\OpenConnect\openconnect.exe"
こんな感じで実行すればEdgeが起動します。そこでログインを行えば接続できます。
OpenConnect GUIと統合したかった
OpenConnect GUIのフォルダを見ると、openconnect.exeとopenconnect-gui.exeが存在し、openconnect-gui.exeがopenconnect.exeのフロントエンドだと思い、openconnect.exeを先程のPythonスクリプトのラッパーに変更してみたのですが、単純なフロントエンドではないらしく、動作が変わらなかったので諦めました。
おわりに
ローカルの通信も許可しないとか大学のVPNは○○。