Slide 1

Slide 1 text

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

Slide 2

Slide 2 text

⾃⼰紹介

Slide 3

Slide 3 text

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 趣味 • ボルダリング • ホットヨガ

Slide 4

Slide 4 text

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ってどん なものかを知っておきましょう。

Slide 5

Slide 5 text

5 #UiPathFriends #UiFes UiPath公式の記事より引⽤ OAuthとは「リソース所有者 の許可を得て、 認可サーバー が ク ライアントアプリケーション に アクセストークン を付与し、 保 護対象リソース に適切にアクセスするための標準的な⼿順を定め たもの」 OAuthとは オーオース︖ 認可サーバ︖ アクセストークン︖ 保護対象︖ ︖︖︖︖︖︖︖︖ よくわからないので、OAuth以前のOrchestrator APIの仕組み と照らし合わせてみましょう (以下OCと呼称) https://www.uipath.com/ja/resources/knowledge-base/implementing-orchestrator-api-with-oauth

Slide 6

Slide 6 text

6 #UiPathFriends #UiFes OAuth登場以前の Orchestrator API 認証仕様 0. ユーザはAPIを使うWEBアプリに、ユーザID/パスワードを 渡しておく(DBに保存される)。 1. WEBアプリは、それをつかって「トークン」を取得する。 2. WEBアプリは、トークンを使ってAPIを呼び出す。 (APIは、データを取得するだけでなく ジョブを実⾏するとか、動作をともなうAPIもある) WEBアプリは「⾃前スケジューラ」 などを想定。 ⾃前スケジューラからOCのジョブ起 動をするときにAPIを利⽤する 処理シーケンス:

Slide 7

Slide 7 text

7 #UiPathFriends #UiFes この⽅式には以下の課題がある ユーザID/パスワードを他システム(WEB アプリ)に渡してしまっている。パスワー ド変更時は、WEBアプリ側も変更が必要。 またWEBアプリからパスワードが漏洩して しまうかもしれない。 というわけでトークンを取得するために「他シス テムにユーザID/パスワードを渡している問題」 を解消する仕組みが、OAuthです。

Slide 8

Slide 8 text

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

Slide 9

Slide 9 text

9 #UiPathFriends #UiFes OAuthのなかでも ⼀般的な、 「Authorization Code Grant Flow」の説明です 重要なポイント 重要なのは、ユーザID/パスワ ードをWEBアプリに⼊⼒する のではなく、認可サーバに⼊⼒ しているところ → ユーザはWEBアプリに、 ユーザID/パスワードを教え る必要がない

Slide 10

Slide 10 text

10 #UiPathFriends #UiFes ⽤語の整理 OAuth用語 図中用語 リソース所有者 ユーザxx 認可サーバ トークンを発行するサーバ (UiPathの場合はOCに同居し てる) クライアントアプリケーション WEBアプリ等 アクセストークン トークン 保護対象リソース OCがもっている情報

Slide 11

Slide 11 text

11 #UiPathFriends #UiFes UiPath公式の記事より引⽤ OAuthとは「リソース所有者 の許可を得て、 認可サーバー が クライアントアプリケーシ ョン に アクセストークン を付与し、 保護対象リソース に適切にアクセスするための標 準的な⼿順を定めたもの」 あらためてOAuthとは …なるほど。 出所: https://www.uipath.com/ja/resources/knowledge-base/implementing-orchestrator-api-with-oauth OAuth。 認可サーバ。 アクセストークン。 保護対象リソース。 読める、読めるぞぉ

Slide 12

Slide 12 text

12 #UiPathFriends #UiFes Slackアプリも OAuthを利⽤しています。 (「クリックした⼈のSlackを操作 するためのトークン」をもらうた めに、OAuthの仕組みをつかって いるということ) OAuthを利⽤している例

Slide 13

Slide 13 text

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

Slide 14

Slide 14 text

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

Slide 15

Slide 15 text

15 #UiPathFriends #UiFes OpenID Connect対応も期待 OpenID ConnectというOAuthの拡張仕様に対応することで、認証にも使⽤できる可能性 クラウドのOCなども「Googleでログイン」とかできるアレです これはGoogleアカウントが「OAuth/OpenID Connect対応」してるって話、今回のはなしと は逆ですが。 Orchestrator が普及して、OCを 拡張するWebサービスあるけど いちいちサインアップめんどくさ いな、、お「OCアカウントでロ グイン」ってあるじゃん、みたい な世界が.. テナントごとにClientID発⾏する今のクラウドOCの仕組みだとできないかもなぁブツブツ

Slide 16

Slide 16 text

16 #UiPathFriends #UiFes • ユーザID/パスワードを他システムに渡さなくてOK︕ • スコープによる、権限の制御が可能 • いつか他システムへの認証にも使えるかも (OpenID Connect対応していれば) OAuthまとめ: 利点

Slide 17

Slide 17 text

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

Slide 18

Slide 18 text

18 #UiPathFriends #UiFes デモ

Slide 19

Slide 19 text

19 #UiPathFriends #UiFes デモ

Slide 20

Slide 20 text

20 #UiPathFriends #UiFes デモ

Slide 21

Slide 21 text

21 #UiPathFriends #UiFes • 認証後の認可画⾯(このWEBアプリに権限委譲していい︖ってい う画⾯)が出ないのですが、OK︖ • refresh_token※は常に返してほしいな(scopeにoffline_access を指定すると返ってくるけど) ※アクセストークンは3600秒で有効期限が切れるので、再取得にこのrefresh_tokenを⽤いる • OpenID Connect対応は⾏われる︖OC2021.4だと、クライア ント管理画⾯でopenidを指定できない。(むりやりSQLサーバのDB に直接にデータを⼊れたらid_tokenは返ってきたけど2021.10とかはどーか な︖︖) 未調査、きになるところ 中のスゴイヒト おしえて

Slide 22

Slide 22 text

22 #UiPathFriends #UiFes • 既存機構が廃⽌と聞いておおぉ、って思っている⽅、まずは触 ってみましょう。 (やってみると、いがいと簡単です、、、たぶん。) • パスワード変更時の対応が不要など、明らかな利点もあるので、 ぜひぜひ活⽤してみてください︕ まとめ APIの認証⽅式がOAuthに変わる件、いかがだったでしょうか︖

Slide 23

Slide 23 text

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 参考⽂献 ご静聴ありがと うございました