WTM2019SingleSignOn

Similar documents
SpringSecurity

OSSTechプレゼンテーション

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

POWER EGG 3.0 Office365連携

intra-mart Accel Platform — イベントナビゲータ 開発ガイド   初版  

CA Federation ご紹介資料

intra-mart Accel Platform — イベントナビゲータ 開発ガイド   初版   None

メディプロ1 Javaサーブレット補足資料.ppt

Microsoft PowerPoint ppt

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

OSSTechドキュメント

プレポスト【問題】

Apache ActiveMQ における認証処理不備の脆弱性

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

V8.1新規機能紹介記事

intra-mart Accel Platform — 外部ソフトウェア接続モジュール 仕様書   第3版  

ムの共有アドレス帳 インスタント メッセージングの宛先に活用することも考えられる 統合アカウント管理 認証 認可 ( アクセス制御 ) の機能 サービス機能 サービス定義統合アカウント管理利用者の認証情報 ( ユーザ ID パスワード) と属性情報 ( グループ 所属部門等 ) を一元的に管理する機

intra-mart Accel Platform — IM-Repository拡張プログラミングガイド   初版  

"CAS を利用した Single Sign On 環境の構築"

Javaセキュアコーディングセミナー東京 第2回 数値データの取扱いと入力値の検証 演習解説

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

Javaセキュアコーディングセミナー2013東京第1回 演習の解説

Microsoft Word - Gmail-mailsoft_ docx

JUnit 概要 2015/4/16 版今泉俊幸 2015 bbreak Systems 1

intra-mart WebPlatform/AppFramework

SinfonexIDaaS機能概要書

PowerPoint Presentation

OpenAM(OpenSSO) のご紹介

Oracleセキュア・エンタープライズ・サーチ

1.SqlCtl クラスリファレンス SqlCtl クラスのリファレンスを以下に示します メソッドの実行中にエラーが発生した場合は標準エラー出力にメッセージを出力します (1)Connect() メソッド データベースへ connect 要求を行います boolean Connect(String

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

Spacewalkにおけるクロスサイトフォージェリ(CSRF)の脆弱性

How to Use the PowerPoint Template

WebOTXマニュアル

Exam : 1z1-809-JPN Title : Java SE 8 Programmer II Vendor : Oracle Version : DEMO Get Latest & Valid 1z1-809-JPN Exam's Question and Answers 1 from Ac

OSSTechプレゼンテーション

スライド 1

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

内容 ( 演習 1) 脆弱性の原理解説 基礎知識 脆弱性の発見方法 演習 1: 意図しない命令の実行 演習解説 2

SAMBA Stunnel(Windows) 編 1. インストール 1 セキュア SAMBA の URL にアクセスし ログインを行います xxx 部分は会社様によって異なります xxxxx 2 Windows 版ダウンロード ボ

GUIプログラムⅣ

JAVA入門

PowerPoint Presentation

更新用証明書インポートツール 操作マニュアル 2011 年 10 月 31 日 セコムトラストシステムズ株式会社 Copyright 2011 SECOM Trust Systems CO.,LTD. All rights reserved. P-1

PowerPoint プレゼンテーション

プログラミング基礎I(再)

はじめに 注意事項本資料に記載の内容は 弊社が特定の環境において 基本動作や接続動作を確認したものであり すべての環境で機能 性能 信頼性を保証するものではありません 輸出時の注意 AX シリーズに関し 本製品を輸出される場合には 外国為替及び外国貿易法の規制並びに米国輸出管理規制など外国の輸出関連

KS_SSO_guide

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

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

改版履歴 版数 日付 内容 担当 V /03/27 初版発行 STS V /01/27 動作条件のオペレーティングシステムに Windows 7 STS を追加 また 動作条件のブラウザに Internet Explorer 8 を追加 V /0

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

Microsoft Word - Gmail-mailsoft設定2016_ docx

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

Microsoft PowerPoint - SSO.pptx[読み取り専用]

Java知識テスト問題

PowerPoint プレゼンテーション

PowerPoint プレゼンテーション

スライド 1

Microsoft Word - Android_SQLite講座_画面800×1280

ArcGIS for Server での Web マップの作成方法

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

Microsoft PowerPoint - OP25全ソフト設定_suruga0106.ppt

Oracle9iAS Release 2 (9.0.2) セキュリティ機能概要

目次 はじめに 1サーバ作成 2 初期設定 3 利用スタート 付録 Page.2

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

--- サーバ側処理 Java servlet の例 // 通常の Java servlet での POST で受信と同じ protected void dopost(httpservletrequest request, HttpServletResponse response) throws S

(Microsoft PowerPoint - ClickFramework.ppt [\214\335\212\267\203\202\201[\203h])

Microsoft PowerPoint - 調達ポータル_電子見積システム設定マニュアル_

第2回講義

Microsoft Active Directory用およびMicrosoft Exchange用Oracle Identity Connector

IceWall FederationによるOffice 365導入のための乱立AD対応ソリューション(オンプレミス型)

仕様書用テンプレート

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

SeciossLink クイックスタートガイド Office365 とのシングルサインオン設定編 2014 年 10 月株式会社セシオス 1

Javaの作成の前に

PowerPoint Presentation

Wagby Testing Framework

(Microsoft Word - \225\361\215\220\217\221_\215K.doc)

4 自己登録 の画面が表示されたら 送信 をクリックします 5 アクションが完了しました : 成功 が表示されたら 画面を下にスクロールし 画面右下隅の OK をクリックします 6Windows 用または Mac 用のキャンパスクラウドエージェントをクリックしてダウ ンロードしてください 8 ダウン

think9i Oracle Internet File System i を使用した ソフトウェア開発手法 日本オラクル株式会社製品本部システム製品マーケティング部 Copyright 2001 Oracle Corporation Japan. All Rights Reserved.

intra-mart im-JavaEE Framework

グラフの探索 JAVA での実装

PowerPoint Presentation

Microsoft PowerPoint - Lecture_3

PowerPoint プレゼンテーション

受講を行うための前提知識 PC の基本操作ができること 座学 コーディング実習 受講講座の名称 9 日間 67:30 システムエンジニア向け IT 基礎 4/8/( 月 ) IT 技術者に共通する基本的な知識の習得を目標とします コンピュータ基礎では コンピュータの仕組みやコンピュータで扱う数値や単

(Microsoft PowerPoint - \223\306\217KJAVA\221\346\202R\224\ ppt)

intra-mart im-J2EE Framework

注意 インストール中に ユーザアカウント制御 ( 以下 UAC といいます ) の実行確認画面が表示されることがあります 表示された場合ははいをクリックして インストールを進めてください なお 管理者以外の場合 管理者への昇格を求める UAC 画面が表示される場合がありますので 管理者アカウントのパ

(1)IE6 の設定手順 (1)IE6 の設定手順 1) 信頼済みサイトの追加手順 1: ブラウザ (Internet Explorer) を起動します 手順 2: ツール / インターネットオプション / セキュリティ メニューを選択します 手順 3: セキュリティ タブの 信頼済みサイト を選択

証明書インポート用Webページ

目次 1. Azure Storage をインストールする Azure Storage のインストール Azure Storage のアンインストール Azure Storage を使う ストレージアカウントの登録... 7

2 Soliton SmartOn Solo Ver (USB2-NFC NFC-ST NFC-RW 対応 ) ここでは Soliton SmartOn Solo Ver のリリース概要について説明します 機能の詳細およびインストール方法については 体験版に含まれてい

rcp-add-01:アーキテクチャ設計書

メディプロ1 Javaプログラミング補足資料.ppt

OSSTech OpenSSO社内勉強会資料

intra-mart Accel Platform

AW-PCS認証設定手順1805

LAN DISK NarSuSの登録方法

Transcription:

[Java 開発者向け ] シングルサインオンへの対応 - Java カスタマイズコードの書き方 1/45

OUTLINE Spring Security Spring Security を使った認証の仕組み Spring Security を使ったシングル サインオン 2/45

Spring Security 3/45

Spring Security とは アプリケーションのセキュリティを高めるためのフレームワーク 認証 認可機能 その他 多数のセキュリティ関連の機能を持つ 対応する認証機能 JDBC 認証 LDAP 認証 CAS 認証 X509 認証 Basic 認証 etc 4/45

なぜ Spring Security? メリット Spring Framework 標準の認証用プロダクト 多彩な基本機能 JDBC 認証 LDAP 認証, OAuth2 認証 基本機能なので設定のみで対応可能 カスタマイズは不要 拡張性の向上 多くのカスタマイズポイントが用意されている 5/45

Spring Security を使った認証の仕組み 6/45

セキュリティレイヤ セキュリティの向上 = セキュリティレイヤの導入 各レイヤと独立してセキュリティ機能を付加する ネットワーク : ファイアウォール DMZ 侵入検知システム OS : ファイアウォール Spring Security = セキュリティレイヤ Webアプリケーションにセキュリティレイヤを提供 Webアプリケーションの機能とは疎結合 7/45

Servlet Filter Servlet Filter とは クライアントからリクエストの前処理やサーバーからのレスポンスの後処理を追加できる機能 Tomcat(Servlet Container) request Client response Filter01 Filter02 Filter03 Servlet 8/45

Spring Security が提供するセキュリティレイヤ Spring Security = Servlet Filter すべての処理に先立ってセキュリティチェックを行う セキュリティ要件を満たさないリクエストはエラーとする Tomcat(Servlet Container) Client request response Secure check Spring Security Filter02 Filter03 Servlet 9/45

フィルタベースの実装 フィルタベースの実装 Spring Securityを有効にすると自動的にフィルタが追加 フィルタで様々な機能を実現 実際は次の順で処理が移譲されている 1. DelegatingFilterProxy 2. FilterChainProxy 3. Spring Security 用 Filter( 複数 ) 10/45

様々なフィルタ Spring Security が提供しているフィルタ ( 一部 ) SecurityContextPersistenceFilter 認証情報を管理する SecurityContext の保持を行う LogoutFilter ログアウト処理を行う UsernamePasswordAuthenticationFilter 認証処理を行う FilterSecurityInterceptor 認証結果をもとにしたアクセス権のチェックを行う フィルタは設定により追加 除去が可能 11/45

UsernamePasswordAuthenticationFilter UsernamePasswordAuthenticationFilter での認証 ユーザー名 / パスワードでの認証処理を行う 特定のURLにPOSTリクエストがくると動作する wagby の場合は logon.do 認証情報を表す Authentication インスタンスを作成 // 画面で入力された username,password を保持する Authentication の作成 Authentication authentication = new UsernamePasswordAuthenticationToken(username, password); authentication.isauthenticated(); // この時点では false 12/45

Authentication クラス Authentication クラスの役割 送信されたユーザー名とパスワードを保持する 認証状況 ( 認証済 / 未認証 ) の情報を保持する 認証後は認証ソース (LDAP や AD, JDBC テーブル ) から取得したユーザー名 / パスワード等も保持する ただしパスワードは認証処理が終わると削除され 長期保持はされない Authentication のサブクラス AnonymousAuthenticationToken, UsernamePasswordAuthenticationToken, RunAsUserToken 認証処理は AuthenticationManager へ移譲する 13/45

処理の流れ (AuthenticationFilter) UsernamePasswordAuthenticationFilter 認証 Token(Authentication インスタンス ) を作成 Client logon.do username/password UsernamePassword AuthenticationFilter username password AuthenticationManager Authentication 14/45

AuthenticationManager AuthenticationManager/AuthenticationProvider AuthenticationManager は複数の AuthenticationProvider を保持 実際の認証処理は AuthenticationProvider へ更に移譲 いずれか一つの AuthenticationProvider で認証が成功すれば認証済みとなる AuthenticationProvider の主なサブクラス DaoAuthenticationProvider LdapAuthenticationProvider ActiveDirectoryLdapAuthenticationProvider 15/45

処理の流れ (AuthenticationManager) AuthenticationManager AuthenticationManager は AuthenticationProvider へ処理を委譲 UsernamePassword AuthenticationFilter AuthenticationManager AuthenticationProvider AuthenticationProvider AuthenticationProvider AuthenticationProvider username password Authentication 16/45

AuthenticationProvider AuthenticationProvider 認証処理を実行するクラス 定義されているメソッドは 2 つ authenticate() メソッド : 認証処理を実装するメソッド supports() メソッド : この認証プロバイダがサポートする Authentication クラスの指定 通常は UsernamePasswordAuthenticationToken @Override public boolean supports(class<?> authentication) { // POST で送信されたユーザー名とパスワードで認証を行う return UsernamePasswordAuthenticationToken.class.isAssignableFrom(authentication); } 17/45

authenticate() メソッド 認証処理を行うメソッド 認証エラーの場合は AuthenticationException を throw 認証成功時の処理 認証ソース (LDAP や AD, JDBC テーブル ) から取得したユーザー名とパスワードから UserDetails インスタンスを作成 認証情報を表す Authentication インスタンスに UserDetails をセットする Authentication に UserDetails がセットされていれば認証が成功したものと判断する 18/45

認証成功時の実装 // username, password は認証ソースから取得したもの // 権限は ROLE_USER 固定 (Wagby では利用されない ) UserDetails user = new User(username, password, AuthorityUtils.createAuthorityList("ROLE_USER")); // 認証情報に UserDetails オブジェクトを格納 UsernamePasswordAuthenticationToken authenticationresult = new UsernamePasswordAuthenticationToken(user, authentication.getcredentials(), user.getauthorities()); authenticationresult.setdetails(authentication.getdetails()); authenticationresult.isauthenticated(); // この時点では true 19/45

処理の流れ (AuthenticationProvider) AuthenticationProvider 認証処理に成功すると認証 Token に UserDetails オブジェクトがセットされる AuthenticationManager AuthenticationProvider AuthenticationProvider AuthenticationProvider AuthenticationProvider username password UserDetails FilterSecurityInterceptor Authentication 20/45

認証後の認証情報の取得 認証情報は SecurityContextHolder が保持 Spring Security 処理後は認証情報は SecurityContextHolder を介して取得する Authentication authentication = SecurityContextHolder.getContext().getAuthentication(); authentication.isauthenticated(); // 認証状況を確認できる UserDetails username password Authentication SecurityContextHolder 21/45

各クラスの役割 クラス UsernamePasswordAuthenticationFilter Authentication (UsernamePasswordAuthenticationToken) AuthenticationManager AuthenticationProvider UserDetails 役割 認証処理の入口となるクラス Authentication を作成する 認証情報を保持するクラス ( 認証済 / 未認証 ) AuthenticationProvider に実際の認証処理を委譲するクラス 認証処理を実行するクラス 認証成功を意味するクラス 認証ソースから取得したユーザ情報を保持する 22/45

処理の流れ ( 全体 ) 1. ログオン画面でユーザー名とパスワードを入力し ログオン 2. ブラウザから logon.do に POST リクエストを送信 3. UsernamePasswordAuthenticationFilter でユーザー名とパスワードを保持した UsernamePasswordAuthenticationToken を作成 ( この時点では未認証 ) 4. 認証処理は AuthenticationManager へ移譲される 5. AuthenticationManager は更に複数の AuthenticationProvider へ処理を委譲 6. 複数の AuthenticationProvider のうち UsernamePasswordAuthenticationToken の認証をサポートするクラスのみが認証処理を行う 23/45

処理の流れ (2) 7. JDBC 認証用 AuthenticationProvider であればデータベースからユーザー名とパスワードを取得し ログオン画面で入力されていたものと一致していれば認証成功とする 8. 認証成功の場合は UserDetails オブジェクトを作成し Authentication( 認証情報 ) に格納する 9. 認証失敗の場合は AuthenticationException を throw する 24/45

Spring Security を使ったシングル サインオン 25/45

シングル サインオン シングルサインオンなし 各アプリケーションに毎回ログオンする シングルサインオンあり 一回のログオンですべてのアプリを利用 業務アプリ系! 業務アプリ系 グループウェア系 グループウェア系 クラウド系 クラウド系 26/45

シングル サインオン [2] 一般的なシングル サインオンの流れ リバースプロキシ型の例 認証サーバー ID リバースプロキシ 認証情報 ID Web アプリケーション pass pass 27/45

シングル サインオン [3] 一般的なシングル サインオンの流れ リバースプロキシ型の例 1. Web アプリケーションにアクセスする 2. アクセス経路にあるリバースプロキシでログオン画面が表示される 3. ユーザー ID/ パスワードを入力しログオン 4. 入力されたユーザー ID/ パスワードを認証サーバーへ問い合わせ 正しければ Web アプリケーションへアクセスが可能となる 5. Web アプリケーションにアクセスする際はリバースプロキシがリクエストに認証情報を埋め込む 6. Web アプリケーションはリクエストに埋め込まれた認証情報を受け取り 認証処理をスキップさせ メニュー画面を表示する 7. 以降のアクセスはリバースプロキシ Web アプリケーションともに認証済み状態としてアクセスされる 28/45

シングル サインオン連携 シングル サインオン連携とは リクエストに埋め込まれた認証情報を受け取りログオン処理をスキップさせる機能 埋め込まれた認証情報があれば認証済みと判断 連携機能がないアプリケーションではログオン画面が出てしまう 29/45

アカウント情報 アカウントの作成は必須 Wagby が連携するのはユーザー ID のみ 所属グループ 権限などの情報が不足した状態ではログオンできない パスワードは使わない LDAP/Active Directory 連携とルールは同じ 30/45

事前認証 (PreAuthentication) Spring Security の事前認証機能 通常の認証処理の前に実施される 事前認証で認証されていれば通常の認証処理では何もしない すでに認証済みとして扱われる 事前認証の仕組みを利用してシングル サインオンを実現する 31/45

事前認証 (PreAuthentication)[2] Spring Security の事前認証機能 シングル サインオンサーバーで認証済みであれば事前認証処理でこれを検知して認証処理を行う Tomcat(Servlet Container) Client リバースプロキシ 認証情報 事前認証フィルタ 認証済 何もしない 認証フィルタ Servlet 32/45

Spring Security が提供するクラス 事前認証に利用するクラスが提供されている 認証フィルタ RequestHeaderAuthenticationFilter リクエストヘッダに埋め込まれた認証情報を取り出す RequestAttributeAuthenticationFilter リクエスト属性に埋め込まれた認証情報を取り出す 認証プロバイダ PreAuthenticatedAuthenticationProvider Authentication クラス PreAuthenticatedAuthenticationToken 33/45

認証情報の取得 認証情報の受け渡し方法はシングル サインオン製品によって様々 request.getremoteuser() でユーザー ID を取得 サーブレットの仕様 リクエスト属性 REMOTE_USER でユーザー ID を取得 String userid = (String) request.getattribute( REMOTE_USER ); リクエストヘッダ SM_USER でユーザー ID 取得 String userid = request.getheader( SM_USER ); リクエストヘッダは簡単に偽装可能なため リバースプロキシなどで偽装ができないよう配慮する必要がある 34/45

Wagby のシングル サインオン連携 request.getremoteuser() を利用 WagbyDesigner > 環境 > サーバ > 認証 > 認証方式 外部認証 (HttpServletRequest#getRemoteUser() を使用 ) 他の取得方式の場合はカスタマイズが必要 35/45

カスタマイズクラスの作成 SecurityConfiguration の拡張クラスを作成 パッケージ名 :jp.jasminesoft.wagby.autoconfiguration リポジトリで定義したパッケージ名 +.autoconfiguration jp.jasminesoft.jfc.autoconfiguration.securityconfiguration を継承する @Configuration アノテーションを付与する クラス名 : 任意 上記の条件を満たした SecurityConfiguration の拡張クラスを用意すると自動的に Wagby 標準クラスは無効化される preauthenticationconfigure(httpsecurity http) メソッドをオーバーライドしカスタマイズコードを記述する 36/45

リクエストヘッダを使った連携 カスタマイズコード 例 ) リクエストヘッダ UID からユーザー ID を取得 @Configuration public class MySecurityConfiguration extends SecurityConfiguration { /** {@inheritdoc} **/ @Override public void preauthenticationconfigure(httpsecurity http) throws Exception { if (!securityproperties.isvalidpreauthentication()) { return; } // 認証サーバで認証済みのユーザー ID を HTTP ヘッダから取得する RequestHeaderAuthenticationFilter filter = new RequestHeaderAuthenticationFilter(); filter.setexceptionifheadermissing(false); // ヘッダ UID にユーザー ID がセットされている filter.setprincipalrequestheader("uid"); http.apply(new PreAuthenticationConfigurer().preAuthenticationFilter(filter)); } } 37/45

リクエスト属性を使った連携 カスタマイズコード 例 ) リクエスト属性 UID からユーザー ID を取得 @Configuration public class MySecurityConfiguration extends SecurityConfiguration { /** {@inheritdoc} **/ @Override public void preauthenticationconfigure(httpsecurity http) throws Exception { if (!securityproperties.isvalidpreauthentication()) { return; } // 認証サーバで認証済みのユーザー ID をリクエスト属性から取得する RequestAttributeAuthenticationFilter filter = new RequestAttributeAuthenticationFilter(); filter.setexceptionifvariablemissing(false); // リクエスト属性 UID にユーザー ID がセットされている filter.setprincipalenvironmentvariable("uid"); http.apply(new PreAuthenticationConfigurer().preAuthenticationFilter(filter)); } } 38/45

認証情報の信頼性チェック 認証情報のチェック 認証情報を詐称できる場合がある 詐称できないネットワーク構成とすることも可能 リバースプロキシを通さないとアプリケーションにアクセスできない リバースプロキシを経由する際にリクエストヘッダ XXX を上書きする シングル サインオン製品によっては認証情報と共に信頼性チェックのための付加情報を送付するものもある チェックの実装方法は製品に依存 39/45

認証情報の信頼性チェック @Configuration public class MySecurityConfiguration extends SecurityConfiguration { /** {@inheritdoc} **/ @Override public void preauthenticationconfigure(httpsecurity http) throws Exception { if (!securityproperties.isvalidpreauthentication()) { return; } AbstractPreAuthenticatedProcessingFilter filter = new AbstractPreAuthenticatedProcessingFilter() { /** {@inheritdoc} **/ @Override protected Object getpreauthenticatedprincipal( HttpServletRequest request) { if (!check(request)) { // 信頼性チェックを満たさない場合は null を返す return null; } // リクエスト属性 / ヘッダからユーザー ID を取得する return request.getattribute("xxx"); //return request.getheader("xxx"); } 40/45

認証情報の信頼性チェック /** 信頼性チェック */ private boolean check(httpservletrequest request) { // TODO 信頼性チェックを実装 問題無い場合は true を返す return false; } }; /** {@inheritdoc} **/ @Override protected Object getpreauthenticatedcredentials( HttpServletRequest request) { return "N/A"; } } } http.apply(new PreAuthenticationConfigurer().preAuthenticationFilter(filter)); 41/45

カスタマイズによるフィルタの追加 エージェント用フィルタの追加 シングル サインオン製品によっては Wagby アプリケーションにフィルタの追加が必要 フィルタの適用順には注意が必要 エージェント用であれば -299 から -200 の間の数値を指定 @Configuration public class MySecurityConfiguration extends SecurityConfiguration {... /** シングル サインオン連携のためのフィルタを追加します */ @Bean public FilterRegistrationBean httpservletrequestwrapperfilter() { FilterRegistrationBean filterbean = new FilterRegistrationBean( new XXXFilter()); // フィルタの指定 filterbean.addurlpatterns("/*"); // フィルタを適用する URL filterbean.setorder(-299); // フィルタの適用順 return filterbean; } } 42/45

DB 認証との併用 以下のようなケースで併用 シングル サインオン側に admin アカウントを作成できない システム管理者権限を付与する適切なユーザーがシングル サインオン側に存在しない DB 認証との併用 シングル サインオン認証なしにアクセスされた場合はログオン画面を表示させ juser テーブルを使った認証を行う セキュリティ要件 動作要件が難しいので要相談 リクエストヘッダや属性を詐称されることはないか 通常のユーザーにログオン画面が見えてしまってもよいか 43/45

その他の認証連携 OpenID Connect, OAuth2 Spring Security 5 で正式対応 (Wagby は現在 4.2 を利用 ) OpenID Connect 対応時に Azure AD 認証連携も対応予定 44/45

まとめ Spring Security を使ったシングル サインオン Spring Security の PreAuthentication の仕組み PreAuthentication を使ったシングル サインオン連携 認証情報の受け渡し 様々な認証情報の取得方法 ( カスタマイズ ) 認証情報の信頼性チェック 認証連携用フィルタの追加方法 今後の拡張 OpenID Connect, OAuth2 への対応 45/45