Save 37% off PRO during our Black Friday Sale! »

OrchestratorにOAuthがやってきた

 OrchestratorにOAuthがやってきた

Orchestrator APIの独自の認証方式が、OAuthに統一され、いずれ既存の方式は廃止となります(クラウドは、2021.10から非推奨、オンプレは2021.4ですでに非推奨に)。

この資料では、OAuthを適用したばあいの、Orchestrator APIの認証の処理シーケンスを解説しようと思います。

A030c34a2bc0d0610b4d87f8c56a2ab7?s=128

Masatomi KINO

October 31, 2021
Tweet

Transcript

  1. ⽊野 雅富 @masatomix Orchestrator APIに OAuthがやってきた

  2. ⾃⼰紹介

  3. 3 #UiPathFriends #UiFes @masatomix ⾃⼰紹介 名前 ⽊野 雅富 (きの まさとみ)

    会社名 株式会社 プライム・ブレインズ ロール システムアーキテクト Twitter https://twitter.com/masatomix Qiita https://qiita.com/masatomix UiPathとの関わり /属性 • 2017/04 くらいに UiPath Studioより先に Orchestrator にであう。 • UiPath Orchestratorの構築、ユーザへのヒアリングに基づくユーザのリリース 統制にあわせたOrchestratorの運⽤設計、設定、導⼊。 • UiPath Japan MVP 2019,2020,2021 趣味 • ボルダリング • ホットヨガ
  4. 4 #UiPathFriends #UiFes 従来のAPIの認証機構が⾮推奨になり、 OAuthが標準となる UiPath公式の記事より引⽤ Automation Cloud クライアントID、ユーザーキーを使⽤して エンドポイント

    https://account.uipath.com/oauth/token をコールして認証します。 ※ 2021年10⽉にDeprecated(⾮推奨)となる予定です。 オンプレミス版 Orchestrator ローカルユーザーのUsernameとPasswordを使⽤して /api/account/authenticate をコールして認証します。 ※ v2021.4以降でDeprecated(⾮推奨)となっています。 出所: https://www.uipath.com/ja/resources/knowledge-base/implementing-orchestrator-api-with-oauth 廃⽌になる前に、OAuthってどん なものかを知っておきましょう。
  5. 5 #UiPathFriends #UiFes UiPath公式の記事より引⽤ OAuthとは「リソース所有者 の許可を得て、 認可サーバー が ク ライアントアプリケーション

    に アクセストークン を付与し、 保 護対象リソース に適切にアクセスするための標準的な⼿順を定め たもの」 OAuthとは オーオース︖ 認可サーバ︖ アクセストークン︖ 保護対象︖ ︖︖︖︖︖︖︖︖ よくわからないので、OAuth以前のOrchestrator APIの仕組み と照らし合わせてみましょう (以下OCと呼称) https://www.uipath.com/ja/resources/knowledge-base/implementing-orchestrator-api-with-oauth
  6. 6 #UiPathFriends #UiFes OAuth登場以前の Orchestrator API 認証仕様 0. ユーザはAPIを使うWEBアプリに、ユーザID/パスワードを 渡しておく(DBに保存される)。

    1. WEBアプリは、それをつかって「トークン」を取得する。 2. WEBアプリは、トークンを使ってAPIを呼び出す。 (APIは、データを取得するだけでなく ジョブを実⾏するとか、動作をともなうAPIもある) WEBアプリは「⾃前スケジューラ」 などを想定。 ⾃前スケジューラからOCのジョブ起 動をするときにAPIを利⽤する 処理シーケンス:
  7. 7 #UiPathFriends #UiFes この⽅式には以下の課題がある ユーザID/パスワードを他システム(WEB アプリ)に渡してしまっている。パスワー ド変更時は、WEBアプリ側も変更が必要。 またWEBアプリからパスワードが漏洩して しまうかもしれない。 というわけでトークンを取得するために「他シス

    テムにユーザID/パスワードを渡している問題」 を解消する仕組みが、OAuthです。
  8. 8 #UiPathFriends #UiFes OAuthの処理シーケンス 2. ユーザは認可したことをWEBアプリにつたえる。 3. WEBアプリがトークンを要求。認可サーバがト ークンを返却。 4.

    WEBアプリはトークンを使ってAPIを呼び出す。 5. APIは認可サーバにトークンの正当性をチェック してもらい、処理を継続する 0.「OCと連携する」的なボタンの押下 1. OCに画⾯遷移してユーザID/パスワー ドの⼊⼒を求められる (本⼈がトークン発⾏の認可をしてい るということ。また、認可サーバからは「認 可コード」という⽂字列が返却される)
  9. 9 #UiPathFriends #UiFes OAuthのなかでも ⼀般的な、 「Authorization Code Grant Flow」の説明です 重要なポイント

    重要なのは、ユーザID/パスワ ードをWEBアプリに⼊⼒する のではなく、認可サーバに⼊⼒ しているところ → ユーザはWEBアプリに、 ユーザID/パスワードを教え る必要がない
  10. 10 #UiPathFriends #UiFes ⽤語の整理 OAuth用語 図中用語 リソース所有者 ユーザxx 認可サーバ トークンを発行するサーバ

    (UiPathの場合はOCに同居し てる) クライアントアプリケーション WEBアプリ等 アクセストークン トークン 保護対象リソース OCがもっている情報
  11. 11 #UiPathFriends #UiFes UiPath公式の記事より引⽤ OAuthとは「リソース所有者 の許可を得て、 認可サーバー が クライアントアプリケーシ ョン

    に アクセストークン を付与し、 保護対象リソース に適切にアクセスするための標 準的な⼿順を定めたもの」 あらためてOAuthとは …なるほど。 出所: https://www.uipath.com/ja/resources/knowledge-base/implementing-orchestrator-api-with-oauth OAuth。 認可サーバ。 アクセストークン。 保護対象リソース。 読める、読めるぞぉ
  12. 12 #UiPathFriends #UiFes Slackアプリも OAuthを利⽤しています。 (「クリックした⼈のSlackを操作 するためのトークン」をもらうた めに、OAuthの仕組みをつかって いるということ) OAuthを利⽤している例

  13. 13 #UiPathFriends #UiFes 実際はこんな処理シーケンス 参考: https://qiita.com/masatomix/items/993c27f6f7615c48ebf4

  14. 14 #UiPathFriends #UiFes 権限管理:スコープについて トークンを発⾏するときに、利⽤可能なAPIを絞ることができる(Scopeと呼ばれる) Slackは認可時に「こういうスコープのトークンを発⾏するけどよいね︖」ときいている ひとつひとつをスコープという

  15. 15 #UiPathFriends #UiFes OpenID Connect対応も期待 OpenID ConnectというOAuthの拡張仕様に対応することで、認証にも使⽤できる可能性 クラウドのOCなども「Googleでログイン」とかできるアレです これはGoogleアカウントが「OAuth/OpenID Connect対応」してるって話、今回のはなしと

    は逆ですが。 Orchestrator が普及して、OCを 拡張するWebサービスあるけど いちいちサインアップめんどくさ いな、、お「OCアカウントでロ グイン」ってあるじゃん、みたい な世界が.. テナントごとにClientID発⾏する今のクラウドOCの仕組みだとできないかもなぁブツブツ
  16. 16 #UiPathFriends #UiFes • ユーザID/パスワードを他システムに渡さなくてOK︕ • スコープによる、権限の制御が可能 • いつか他システムへの認証にも使えるかも (OpenID

    Connect対応していれば) OAuthまとめ: 利点
  17. 17 #UiPathFriends #UiFes • APIの活⽤例として、OrchestratorっぽいWEB のアプリを作ってみた(昨年やったデモとおなじ) • その際に必要な認証情報を設定するオペの動画です • 従来のユーザID/パスワードを⼊⼒する⽅法

    • OAuth対応した⽅法 をお⾒せします デモ
  18. 18 #UiPathFriends #UiFes デモ

  19. 19 #UiPathFriends #UiFes デモ

  20. 20 #UiPathFriends #UiFes デモ

  21. 21 #UiPathFriends #UiFes • 認証後の認可画⾯(このWEBアプリに権限委譲していい︖ってい う画⾯)が出ないのですが、OK︖ • refresh_token※は常に返してほしいな(scopeにoffline_access を指定すると返ってくるけど) ※アクセストークンは3600秒で有効期限が切れるので、再取得にこのrefresh_tokenを⽤いる

    • OpenID Connect対応は⾏われる︖OC2021.4だと、クライア ント管理画⾯でopenidを指定できない。(むりやりSQLサーバのDB に直接にデータを⼊れたらid_tokenは返ってきたけど2021.10とかはどーか な︖︖) 未調査、きになるところ 中のスゴイヒト おしえて
  22. 22 #UiPathFriends #UiFes • 既存機構が廃⽌と聞いておおぉ、って思っている⽅、まずは触 ってみましょう。 (やってみると、いがいと簡単です、、、たぶん。) • パスワード変更時の対応が不要など、明らかな利点もあるので、 ぜひぜひ活⽤してみてください︕

    まとめ APIの認証⽅式がOAuthに変わる件、いかがだったでしょうか︖
  23. 23 #UiPathFriends #UiFes • The OAuth 2.0 Authorization Framework :

    OAuthの仕様書(RFC6749) https://datatracker.ietf.org/doc/html/rfc6749 • 外部アプリケーション機能(OAuth)によるOrchestrator APIコール実装⽅法: 公式のよくまとまった記事。 https://bit.ly/2ZB83MD • 外部アプリケーションを管理する: (おもにWEB)アプリの登録⽅法 https://docs.uipath.com/orchestrator/lang-ja/docs/managing-external-applications • 外部アプリに OAuth を使⽤する: アプリからAPIの呼び出し⽅法が記載されている https://docs.uipath.com/orchestrator/lang-ja/reference/using-oauth-for-external-apps • APIとスコープ対応表 https://docs.uipath.com/orchestrator/lang-ja/reference/permissions-per-endpoint 参考⽂献 ご静聴ありがと うございました