自己紹介 氏縄武尊 (Ujinawa Takeru) ThemiStruct 認証技術グループ技術開発 (Inventory 認証等 ) OpenID Connect OpenID Foundation Japan Enterprise Identity WG 2

Similar documents
自己紹介 氏縄武尊 (Ujinawa Takeru) Work 株式会社オージス総研テミストラクトソリューション部 4 年目認証 認可 ID 管理 PKI OpenID Foundation Japan EIWGメンバー Favorite Spec: OpenID Connect, OAuth2.0

自己紹介 八幡孝 ( やはたたかし ) 株式会社オージス総研 ThemiStruct ソリューション開発リードアーキテクト ThemiStruct 関連サービスの東日本エリア責任者 OpenAM コンソーシアム活動メンバー OpenID ファウンデーション ジャパン Enterprise Ident

Microsoft PowerPoint _セミナー資料(オージス).pptx

はじめに インフォマート API の呼び出しには OAuth2.0 による認証を受ける必要があります OAuth2.0 を使うことで インフォマート API を利用するサービスは インフォマートプラットフォーム ID( 1 以下 PFID) とパスワードを保存したり処理したりすることなく PFID

目次 第 1 章はじめに 本ガイドの位置付け 認証から API 呼び出しまでの流れ 関連ガイド 4 第 2 章 API の利用準備 5 第 3 章 OAuth 2.0 認証と API 呼び出し OAuth 2.0 認証の概要 アプリケーショ

IoT 共通プラットフォーム実証環境 アプリケーション開発ガイド 認証認可編 第 1.3 版 2019 年 4 月 高松市 i

自己紹介 氏縄武尊 (Ujinawa Takeru) Work 株式会社オージス総研テミストラクトソリューション部 3 年目 ID 管理 認証周りの開発 OpenID Connect, AWS Private 滋賀県彦根市出身 Copyright 2016 OGIS-

今後の認証基盤で必要となる 関連技術の動向 株式会社オージス総研テミストラクトソリューション部八幡孝 Copyright 2016 OGIS-RI Co., Ltd. All rights reserved.

CA Federation ご紹介資料

intra-mart Accel Platform — OAuth認証モジュール 仕様書   初版  

OSSTechドキュメント

PowerPoint プレゼンテーション

intra-mart Accel Platform

オージス総研のご紹介 社名 代表者 設立 株式会社オージス総研 取締役社長平山輝 1983 年 6 月 29 日 資本金 4 億円 ( 大阪ガス株式会社 100% 出資 ) 売上実績 512 億円 ( 連結 ) 270 億円 ( 単体 ) ( 2010 年度 ) 従業員数 2,847 名 ( 連結

FUJITSU Cloud Service K5 認証サービス サービス仕様書

OpenID ConnectとSCIMのエンタープライズ実装ガイドライン

FUJITSU Cloud Service for OSS 認証サービス サービス仕様書

sp c-final

OpenAM(OpenSSO) のご紹介

OSS活用ソリューション ThemiStruct (テミストラクト) シリーズ概要

Disclaimer この資料は日本アイ ビー エム株式会社ならびに日本アイ ビー エムシステムズ エンジニアリング株式会社の正式なレビューを受けておりません 当資料は 資料内で説明されている製品の仕様を保証するものではありません 資料の内容には正確を期するよう注意しておりますが この資料の内容は

シングルサインオンしてますか? 2014/11/21 第 6 回 OpenAM コンソーシアムセミナー 1

PowerPoint プレゼンテーション

SAML認証

Active Directory フェデレーションサービスとの認証連携

How to Use the PowerPoint Template

SinfonexIDaaS機能概要書

勉強会の流れ Google API の概要 デモ curl で実際に体験 Copyright 2010 SRA OSS, Inc. Japan All rights reserved. 2

intra-mart Accel Collaboration — Collaboration共通 ユーザ操作ガイド   第7版  

POWER EGG 3.0 Office365連携

ご利用のコンピュータを設定する方法 このラボの作業を行うには 事前設定された dcloud ラボを使用するか 自身のコンピュータをセットアップします 詳細については イベントの事前準備 [ 英語 ] とラボの設定 [ 英語 ] の両方のモジュールを参照してください Python を使用した Spar

<4D F736F F F696E74202D204A4E E718F9096BC574795D78BAD89EF8E9197BF5F8CF68A4A97702E >

モバイル オープンAPIを 活用するための認証基盤 標準技術 OpenID Connect, OAuth 適用の考え方 株式会社オージス総研 サービス事業本部 テミストラクトソリューション部 八幡 孝 2017 OGIS-RI Co., Ltd. 2017/9/15 Japan Identity C

SeciossLink クイックスタートガイド

統合 ID 管理システム SECUREMASTER/EnterpriseIdentityManager(EIM) 連携先システム : AD 1, 業務サーバ 3 監査オプション : あり ユーザ ID 情報を一元管理し 業務システム (CSV インポートが可能なシステム ) や AD などの ID

PowerPoint プレゼンテーション

2 WHITE PAPER: OAUTH ca.com/jp OAuth 3 OAuth 4 OAuth 6 OAuth OAuth 8 CA API Gateway OAuth 9 OAuth Toolkit 10 CA API Gateway 2-legged OAuth 3-leg

NAC(CCA): ACS 5.x 以降を使用した Clean Access Manager での認証の設定

学認とOffice 365 の 認証連携

AXIOLE V Release Letter

intra-mart Accel Platform — OAuth プログラミングガイド   初版  

OSSTech OpenSSO社内勉強会資料

9 WEB監視

認証連携(フェデレーション)ソリューションIceWall Federationのご紹介

PowerPoint プレゼンテーション

WTM2019SingleSignOn

自己紹介 所属部署 生産革新ソリューション開発二部 OSS 推進グループ OSSを使ったシステム構築から運用までワンストップでサポート対象 OSSは50 種類以上 私の担当 各種 OSSの技術的サポート OpenAM OpenIDMの導入支援 OpenAM OpenIDMの機能拡張 バグ修正も実施

Web ( ) [1] Web Shibboleth SSO Web SSO Web Web Shibboleth SAML IdP(Identity Provider) Web Web (SP:ServiceProvider) ( ) IdP Web Web MRA(Mail Retrieval

PowerPoint プレゼンテーション

SpringSecurity

FIDO技術のさらなる広がり

学認(Shibboleth)との認証連携

内容 CAS 対応アプリケーションの紹介 熊本大学の事例 CAS 対応サイト アプリの構築方法

VPN 接続の設定

intra-mart Accel Platform — OData for SAP HANA セットアップガイド   初版  

外部 RESTful サービス コール

オープンソース・ソリューション・テクノロジ株式会社 代表取締役 チーフアーキテクト 小田切耕司

LightSwitch で申請システム Windows ストアアプリで受付システムを構築してみた 情報政策グループ技術職員金森浩治 1. はじめに総合情報基盤センターでは 仮想サーバホスティングサービスや ソフトウェアライセンス貸与といった さまざまなエンドユーザ向けサービスを行っている 上記のよう

SonicDICOM Cloud Connector インストール手順書 SonicDICOM Cloud Connector とは 検査装置が撮影した画像を自動的にクラウドへアップロー ドするためのソフトウェアです 1 前準備 クラウド上に PACS を作成する SonicDICOM Cloud

IceWallソフトウェア認証連携(フェデレーション)ソリューションIceWallFederationのご紹介

スピーカースライド作成前の確認シート例

これらの情報は 外部に登録 / 保存されることはございません 5 インターネット接続の画面が表示されます 次へ > ボタンをクリックしてください 管理者様へ御使用時に設定された内容を本説明文に加筆ください 特に指定不要で利用可能であった場合は チェックボックスを オフ していただきますようご案内くだ

デジタルトランスフォーメーションを可能にするオープンAPIへの取り組み方

AW-PCS認証設定手順1805

DTD Reference Guide

FW ファイルアップロード ダウンロード機能利用ガイド Version 年 9 月 21 日富士通株式会社 i All Right Reserved, Copyright FUJITSU LIMITED

Software Token のセット価格 398,000 円 (25 ユーザ版 税別 ) をはじめ RSA SecurID Software Token を定価の半額相当の特別価格を設定した大変お得な スマートモバイル積極活用キャンペーン! を 3 月 31 日 ( 木 ) まで実施します また

LDAP Manager SupportList

1 ユーザ認証を受けた権限で アプリケーションを利用するために ログインプロキシにアクセスします 2 ログインプロキシにより Shibboleth SP から Shibboleth IdP の認証画面にリダイレクトされます 3 ブラウザに認証画面を表示します 4 認証画面にユーザ / パスワードを入

ROBOTID_LINEWORKS_guide

オープンソース・ソリューション・テクノロジ株式会社

desknet s NEO SAML 連携設定手順書 2019 年 1 月 株式会社セシオス 1

オープンソース・ソリューション・テクノロジ株式会社 代表取締役 チーフアーキテクト 小田切耕司

Web AppBuilder for ArcGIS (Developer Edition) インストールガイド

OpenAMトレーニング

VPN ユーザを管理し、RV016、RV042、RV042G および RV082 VPN ルータの速い VPN を設定して下さい

¥Í¥Ã¥È¥ï¡¼¥¯¥×¥í¥°¥é¥ß¥ó¥°ÆÃÏÀ

Transcription:

OpenID Connect & SCIM 最新プロトコル動向 株式会社オージス総研テミストラクトソリューション部氏縄武尊 2015/08/24

自己紹介 氏縄武尊 (Ujinawa Takeru) ThemiStruct 認証技術グループ技術開発 (Inventory 認証等 ) OpenID Connect OpenID Foundation Japan Enterprise Identity WG 2

会社概要 株式会社オージス総研 代表者 : 設立 : 代表取締役社長西岡信也 1983 年 6 月 29 日 資本金 : 4.4 億円 ( 大阪ガス株式会社 100% 出資 ) 事業内容 : 主な事業所 本社 : 東京本社 : 千里オフィス : 名古屋オフィス : システム開発 プラットフォームサービス コンピュータ機器 ソフトウェアの販売 コンサルティング 研修 トレーニング 大阪府大阪市西区千代崎 3- 南 2-37 ICCビル東京都港区港南 2-15-1 品川インターシティA 棟大阪府豊中市新千里西町 1-2-1 愛知県名古屋市中区錦 1-17-13 名興ビル 売上実績 : 582 億円 ( 連結 ) 308 億円 ( 単体 ) (2014 年度 ) 従業員数 : 3,126 名 ( 連結 ) 1,279 名 ( 単体 ) 関連会社 : さくら情報システム ( 株 ) ( 株 ) 宇部情報システム ( 株 ) システムアンサー OGIS International, Inc. 上海欧計斯軟件有限公司 ( 中国 ) オージス総研グループ売上構成比 ( 連結 ) 取得許可認定 3

第 章 認証を取り巻く時代の変遷 4

従来の認証 それぞれの Web ページでの認証 - 各ページでログインを行う - 各ページの開発を行う 1 アクセス 2 認証要求 3 認証応答 4 情報照会 クライアント端末 6 識別情報返却 7 識別情報と一緒にアクセス アプリケーション 5 認証結果 ユーザーストア 8 ユーザ向けページ 5

従来の認証 (SSO) OpenAM 等 2 認証 5 識別情報提供 認証基盤アプリケーション 3 情報照会 4 認証結果 認証基盤 ユーザーストア クライアント端末 7 識別情報確認 6 識別情報と一緒にアクセス 8 ユーザ情報連携 9 ユーザ情報連携 ウェブアプリケーション 1 アクセス 10 ユーザ向けページ エージェント or リバースプロキシ アプリケーション 6

SAML 1 アクセス 5 検証 クライアント端末 6 ユーザ向けページ 4SAML アサーション ( 認証情報 属性 権限 ) SP (Service Provider) 2SAML リクエスト IdP (Identiry Provider) 7

SAML の問題点 導入が困難なケースが多い - 用語の多い - メリット デメリットの理解が追いつかない - 検証 デバッグが容易でない SAML + 独自プロトコル等の実装 変化が多く対応し辛い状況が続いている 8

第 章 OpenID Connect とは 9

OAuth2.0 HTTP 上で認可 - 自分の代わりに何かしてもらう クライアント端末 4 認可コード 2 認可 OAuth クライアントリクエスト 5 認可コード 6 トークン応答 認可サーバ 10

OpenID Connect 3ID Token RP (Relying Party) クライアント端末 OP (OpenID Provider) 11

OpenID Connect (OP で ) 認証後に (RP の ) サービスを利用 - 認証結果と属性情報を受け渡せる - OAuth2.0 プロトコルがベース 重要なワード - OP (OpenID Provider) 認証を行い ID 情報を連携する - RP (RelyingParty) OP で認証後にアプリケーションを提供する - ID Token 認証したエンドユーザの情報 認証に関する情報を持つトークン - User Info 認証したエンドユーザの情報 - Access Token Userinfo の情報を取得するためのトークン 12

Code Flow クライアント端末 4 認可コード連携 2 認証要求 RP (Relying Party) 5 認可コード 6ID Token OP (OpenID Provider) 13

認可 Code Flow クライアント端末 RP(Relying Part) OP(OpenID Provider) アクセス OP へリダイレクト response_type=code client_id= クライアント ID redirect_uri= 認証後に戻る場所 scope= 取得したい情報 nonce=replay atack 対策 state= コールバック主の特定 etc 14

認可 Code Flow クライアント端末 Relying Party OpenID Provider 上の値を持って OP へリダイレクト 認証画面返却 認証情報送信 redirect_uri にリダイレクト code= 認可コード state= 渡された state 値 15

認可 Code Flow クライアント端末 Relying Party OpenID Provider 渡された情報を持ってリダイレクト 取得したコードを用いて ID Token, Access Token を要求 ID Token と Access Token を返却 Access Token を用いて User Info の情報を要求 ユーザ向けのサービスを提供 User Info の情報を返却 16

Implicit Flow クライアント端末 4ID Token 連携 2 認証要求 RP (Relying Party) OP (OpenID Provider) 17

Implicit Flow クライアント端末 Relying Party OpenID Provider アクセス OP にリダイレクト response_type=id_token token client_id= クライアント ID redirect_uri= 認証後に戻る場所 scope= 取得したい情報 nonce=replay atack 対策 state= コールバック主の特定 etc 18

Implicit Flow クライアント端末 Relying Party OpenID Provider 上の値を持って OP へ 認証画面返却 認証情報送信 redirect_uri にリダイレクト id_token=id Token state= 渡された state 値 access_token= アクセストークン token_type=bearer 19

Implicit Flow クライアント端末 Relying Party OpenID Provider 渡された情報を持ってリダイレクト Access Token を用いて User Info の情報を要求 User Info の情報を返却 ユーザ向けのサービスを提供 20

ID Token の形 ( 例 ) eyj0exaioijkv1qilcjhbgcioijsuzi1nij9.eyjzdwiioij1amk1miisi mf1zci6imnsawvudf9pzcisimlzcyi6imh0dha6ly9vcc5legftcgxl LmNvbSIsImV4cCI6IjE0Mzk5NDYzNjAiLCJub25jZSI6IkFCQ0QxMjM 0IiwiaWF0IjoiMTQzOTk0NjAwMCJ9.S2GTMObgH956hjE6Pf7LEL1 +CyiobH8tVImvxsVqx1fAZkFNZGP4aVv5jjNj2Ldwt/LoGJs8Er0YZSf KPWI1cdmEr+NtYeRyljbQvCRhg3T4aZpBfzBcwABj8DQxbv0uNuV 0s4eHS0OMM7LVJnXk/kzdCeM/cwlzz0Vor0aYdAg= ヘッダ. ペイロード. 署名 JWT(JSON Web Token) 形式 引用 http://openid.net/specs/openid-connect-core-1_0.html 21

ID Token の中身 ( 例 ) ヘッダ ( 署名に用いる情報 ) { "typ":"jwt", "alg":"rs256" } ペイロード (ID Token の情報 ) { "sub":"uji52", "aud":"client_id", "iss":"http://op.example.com", "nonce":"abcd1234", "iat": "1439946000" "exp":"1439946360" } eyj0exaioijkv1qilcjhbgcioijsuzi1nij9 + eyjzdwiioij1amk1miisimf1zci6imnsawv udf9pzcisimlzcyi6imh0dha6ly9vcc5legf tcgxllmnvbsisimv4cci6ije0mzk5ndyznja ilcjub25jzsi6ikfcq0qxmjm0iiwiawf0ijoi MTQzOTk0NjAwMCJ9 S2GTMObgH956hjE6Pf7LEL1+CyiobH8tVI mvxsvqx1fazkfnzgp4avv5jjnj2ldwt/log Js8Er0YZSfKPWI1cdmEr+NtYeRyljbQvCRhg 3T4aZpBfzBcwABj8DQxbv0uNuV0s4eHS0 OMM7LVJnXk/kzdCeM/cwlzz0Vor0aYdAg= 22

SAML に比べての優位点 実装しやすい - 何をやりとりするのかがわかりやすい - 設定に必要な属性を予め特定できる - 開発者の負担軽減 23

第 章 OpenID Connect 実装例 24

実装例 & デモ OP(OpenID Provider) -OpenAM -op.example.com RP(RelyingParty) -Node.js (passport) -rp.example.com 25

第 章 OpenAM 26

OpenAM の設定 OpenAM の OP 化 - クレーム - リクエストタイプ - 署名方法 - etc RP の登録 - Client ID - Client Secret - redirect uri - etc 27

OpenAM(OAuth2 プロバイダ ) サービス >OAuth2 プロバイダ - OP の設定 サポートするクレーム リクエストタイプ 署名方式 28

OpenAM(OAuth2 プロバイダ ) 29

OpenAM(OAuth2 プロバイダ ) 30

OpenAM(OAuth2.0 クライアント ) エージェント >OAuth2.0 クライアント - Client ID/Secret - リダイレクト URI 等 31

OpenAM(OAuth2.0 クライアント ) 32

OpenAM(OAuth2.0 クライアント ) 33

第 章 Passport 34

35

Node.js(passport-openidconnect) 初期設定 - Web フレームワーク (Express) # npm install -g express # npm install -g express-generator # express -e passport - 今回は passport-openidconnect というモジュールを使って Node.js のプロジェクトを RP として動作させる 36

package.json 利用するライブラリを指定 - passport 認証ストラテジー を使って認証機能を実装 - passport-openidconnect OpenID Connect 用の 認証ストラテジー を提供 - - - snip - - - "passport": "*", "passport-openidconnect": "*", } } 37

RP の設定 - app.js に記載した RP として動作させるための設定 passport.use(new OpenidConnectStrategy({ authorizationurl: "http://op.example.net/sso/oauth2/authorize", tokenurl: "http://op.example.net/sso/oauth2/access_token", userinfourl: "http://op.example.net/sso/oauth2/userinfo", clientid: "passporttest", clientsecret: "password", callbackurl: "http://rp.example.net:3000/cb", scope: ["openid"] }, function(accesstoken, refreshtoken, profile, done) { return done(null, profile); })); app.get('/auth', passport.authenticate('openidconnect')); app.get('/cb', passport.authenticate('openidconnect',{failureredirect: '/login'}), function(req, res) {res.redirect('/');} ); 38

RP で取得できる ID Token の情報 ( デモ内容の概要 ) OP からのリダイレクト /cb?scope=openid&code=a7a96bf2-f3ab-4d10-b1d3-6dbc125e9bc6 ID Token の情報 { tokenname: 'id_token', azp: 'passporttest', sub: 'uji52', at_hash: 'vbghv8i7ainpfa4gz9_hpg', iss: 'themistruct', iat: 1439961417, auth_time: 1439961417, aud: [ 'passporttest' ], - - - - snip - - - - } 39

第 章 Identity の管理 40

ID 管理製品 これまでの ID 管理 それぞれのプロトコルや独自 API に合わせた ID 配布 受け口がバラバラ プロビ先毎の対応が必要 都度開発必要 職人技 高価格化 41

SCIM とは System for Cross-domain Identity Management - ID 管理のためのスキーマとインターフェースを定義 RESTful - リソースの操作を HTTP メソッドに準拠 GET: 取得 POST: 新規 PUT: 更新 DELETE: 削除 PATCH: 部分更新 - ステートレス - ステータスコードで処理結果を通知 http://scim.example.com/users GET PUT PATCH POST DELETE 標準化状況 - RFC Editor Queue に入っておりまもなく RFC 化の見込み 42

スキーマ 属性を列挙したもの - Singular Attribute id, username, name, etc - Multi-valued Attribute emails, addresses, groups, etc urn:ietf:params:scim:schemas:core:2.0:user urn:ietf:params:scim:schemas:core:2.0:group urn:ietf:params:scim:schemas:extension:enterprise:2.0:user { "schemas": ["urn:ietf:params:scim:schemas:core:2.0:user"], "id": "abcd1234 ", "externalid": "uji52", "username": "uji52" "name": { "familyname": "ujinawa", https://tools.ietf.org/html/draft-ietf-scim-core-schema-22 43

リソースの共通属性 ( 一部 ) id - SCIM サーバ側でリソースにユニークな ID externalid - SCIM クライアント側での ID meta - created 作成した時刻 - lastmodified 最終更新時刻 - location リソースにアクセスするための URI - etc 44

ユーザリソースの属性 ( 一部 ) username - サービスプロバイダでユニークな ID name - familyname - givenname - middlename - honorificprefix/suffix title - 役職 active emails addresses 45

POST /Users HTTP/1.1 POST サンプル /Users HTTP/1.1 ( ユーザ作成リクエスト ) Host: scim.example.com Host: scim.example.com Accept: application/scim+json Accept: application/scim+json Content-Type: application/scim+json Content-Type: application/scim+json Authorization:... //APIの認可情報 Authorization:... //APIの認可情報 Content-Length:... Content-Length:... { "schemas": "schemas": "urn:ietf:params:scim:schemas:core:2.0:user"], ["urn:ietf:params:scim:schemas:core:2.0:user"], "username": "uji52", "username": "ujinawa takeru", "externalid": "uji52", "externalid": "uji52", "name": { "name": "familyname": "ujinawa", "familyname": "ujinawa", "givenname": "takeru" "givenname": "takeru" - - - - snip - - - - 46 snip

HTTP/1.1 サンプル 201 ( ユーザ作成レスポンス Created ) Content-Type: application/scim+json Location: https://scim.example.com /v2/users/< ユーザのリソースID> { "schemas":["urn:ietf:params:scim:schemas:core:2.0:user"], "id": < ユーザのリソースID>, "username": "uji52", "externalid": "uji52", "name": { "familyname": "ujinawa", "givenname": "takeru" - - - - snip - - - - 47

サンプル ( ユーザ情報取得 ) GET /Users/< 取得したいユーザのリソースID> Host: scim.example.com Accept: application/scim+json Authorization:... //APIの認可情報 48

HTTP/1.1 サンプル 200 ( ユーザ情報取得 OK ) Content-Type: application/scim+json Location: https://scim.example.com /v2/users/< ユーザのリソースID> { "schemas":["urn:ietf:params:scim:schemas:core:2.0:user"], "id": < ユーザのリソースID>, "username": "uji52", "externalid": "uji52", "name": { "familyname": "ujinawa", "givenname": "takeru" - - - - snip - - - - 49

第 章 まとめ 50

まとめ それぞれが独自の方式を取るのは辞めたい - 開発費用がかかる - 運用が大変 標準の仕様なので安心して身を任せる - 周知の技術なら教えてくれる人も多い 力を合わせてセキュリティ向上へ 51

ご清聴ありがとうございました お問合せ先 TEL: 03-6712-1201 / 06-6871-7998 E-mail: info@ogis-ri.co.jp 52