[[Open棟梁Project>http://opentouryo.osscons.jp/]] - [[マイクロソフト系技術情報 Wiki>http://techinfoofmicrosofttech.osscons.jp/]] -[[戻る>セキュリティ]] * 目次 [#kd1172d7] #contents *概要 [#jc8e8ef1] 認証基盤の選定や実装について纏めています。 *[[トークン]] [#i0670f8d] **[[JWT]] [#n3fb7eb7] **[[SAML]] [#s940ae86] *種類 [#o815c7c4] **HTTPの認証 [#gf2d8060] ***匿名アクセス [#eed67f54] -匿名アクセスを許可する。 -通常サービスの実行アカウントで実行される。 -(偽装をおこなえば)匿名アカウントで実行される。 ***基本認証 [#mb2c8e20] -ユーザー名とパスワードを入力するためのダイアログ ボックスが表示される。 -アカウント情報は暗号化されないBase64文字列でサーバに送られる。 -通常サービスの実行アカウントで実行される。 -(偽装をおこなえば)認証されたアカウントで実行される。 ***ダイジェスト認証 [#tda3ddf0] -ハッシング テクノロジーを使用し、解読不能な方法でユーザー情報を送信する。 -通常サービスの実行アカウントで実行される。 -(偽装をおこなえば)認証されたアカウントで実行される。 **Windwos認証 [#m4be745d] HTTPやSMBなどの通信ライブラリに組み込まれており、~ 実行アカウントを使用しオートネゴシエートで認証することが可能。 ***NTLM認証 [#zb3340de] -[[ミラーアカウント]]でも、[[Active Directory]]でも可能。 -(偽装をおこなえば)認証されたアカウントで実行される。 ***ケルベロス認証 [#o8a80b4b] -「[[Active Directory]]」が必要、インターネットに拡大できない。 -(偽装をおこなえば)認証されたアカウントで実行される。 **クッキー認証チケット型 [#la8f4c73] クッキー認証チケットを発行するタイプ -認証されたアカウントを偽装するにはカスタムの実装が必要。 ***統合認証基盤型 [#mf25a493] -SiteMinder、IceWallなどの実績のあるSSOをサポートする統合認証基盤製品。 -これらは、下記HPで言う所の、「エージェント型」の統合認証基盤である。 -基礎から学ぶ!シングルサインオン - IT、IT製品の情報なら【キーマンズネット】~ http://www.keyman.or.jp/at/30001292/ ***実装ルール型(ライブラリ型) [#f5c72a77] 各アプリケーション(や、使用しているフレームワーク)に~ 認証クッキーの発行と認証等の機能を実装している方式。 **[[クレームベース認証]] [#gf1f2d37] 認証連携(IDフェデレーション)を使用して認証。 -SAML, WS-FED --WIF(Windows Identity Foundation)を使用する。 -OpenId Connect --Microsoft.Owin.Security.OpenIdConnectを使用する。 --WIF Extension for OAuth(OpenID Connect)を使用する。 *選定 [#i8941f0c] **HTTPの認証 [#eb58ce03] HTTPの認証なのでWebサーバでサポートされる。 **Windwos認証 [#m0ad1078] Windows環境であれば。 -NTLM認証をサポートするクライアントも多い。 -SambaでLinux環境のケルベロス認証も可能。 --Samba4でのActive Directory構築 - OSSでLinuxサーバ構築~ http://www.oss-d.net/samba4/ad ***NTLM認証 [#zf1dd267] -[[ミラーアカウント]]でも、[[Active Directory]]でも可能。 -デスクトップへのログインと連動したSSO認証が可能。~ ただし、[[ミラーアカウント]]の場合は、アカウントの管理が面倒。 -ベースクライアント認証でのダブルホップが不可能。 -ADが無いので、別途DBなどを用意して追加の承認の機能を実装できる。 ***ケルベロス認証 [#a8d0341c] -「[[Active Directory]]」が存在する場合。 -デスクトップへのログインと連動したSSO認証が可能。 -ベースクライアント認証でのダブルホップが可能。 -ADが有るので、各アプリケーションにLDAPを使用した追加の承認の機能を実装できる。 **クッキー認証チケット型 [#q11063ab] -各アプリケーションに認証情報を使用した承認の機能を実装する。 ***統合認証基盤型 [#bcd2a481] -認証をISAPIレイヤで処理するので、基盤構築作業として対応でき、~ Webアプリケーション側に特別な作り込みは必要ないため、大きなメリットがある。 -ディレクトリ・サービスと連携している場合、~ 各アプリケーションにこの情報を使用した追加の承認の機能を実装できる。 ***実装ルール型(ライブラリ型) [#t68197e3] 各アプリケーション(や、使用しているフレームワーク)に認証処理を実装する場合、こちらの方式になる。 以下、ASP.NETでは、以下の様な実装ルール型(ライブラリ型)のフレームワーク or ライブラリを使用できる。 -[[Forms認証>ASP.NET Forms認証]]~ Webアプリケーション毎に認証Formを作成 -ASP.NET MembershipProvider~ LDAPやユーザマスタテーブルなどの資格情報ストアを使用した認証のフレームワーク。 -[[ASP.NET Identity]] --Forms認証ではなく、OWINの認証用ミドルウェアを使用している。 --新しいミドルウェアのため、B2Cの認証サイトに必要な機能が充実している。 -参考 --[[ASP.NET Forms認証 vs ASP.NET Identity]] **[[クレームベース認証]] [#if326ed5] [[実装ルール型(ライブラリ型)>#t68197e3]]で、言語が混在になると、個別の部品を整備する必要があり面倒になる。 -ASP.NETのForms認証 -独自Frameworkの独自認証 また、コレをクリアするには、[[統合認証基盤型>#bcd2a481]]の認証基盤製品を導入する必要があった。~ このため、近年、下記のような認証/認可の仕組みのプロトコルレベルでの標準化が進んでいる([[クレームベース認証]])。 ***[[SAML]]、[[WS-FED>WS-Federation]] [#j4fa72a7] -[[SAML]] -[[WS-Federation]] ***[[OpenID / OAuth / OpenID Connect>クレームベース認証#bd876705]] [#gcb8bfd9] -[[OpenID]] -[[OAuth]] -[[OpenID Connect]] ***ベターユース [#d46629ec] クレームベース認証の登場により、認証基盤の設計が難しくなりました。 ただ、以下のようにすれば、割りとシンプルなんじゃないかな?と思います。 -[[IdP(CP)>クレームベース認証#h4a44b62]]、[[STS>クレームベース認証#h4a44b62]]を1つに集約して[[SP(RP)>クレームベース認証#h4a44b62]]側から連携するのが良い。 --基本的に、[[STS>クレームベース認証#h4a44b62]]は、 ---開発するものではなく、構築するもの。 ---[[ASP.NET Identity>https://techinfoofmicrosofttech.osscons.jp/index.php?ASP.NET%20Identity]]などを使用すればOAuth2対応の[[STS>クレームベース認証#h4a44b62]]を開発可能だが、難易度が高い。 --これにより、IDフェデレーションやソーシャルログイン対応の実装をするポイントを[[IdP(CP)>クレームベース認証#h4a44b62]]・[[STS>クレームベース認証#h4a44b62]]の1箇所に集約できる。 -[[SP(RP)>クレームベース認証#h4a44b62]]側では、[[STS>クレームベース認証#h4a44b62]]と連携した外部ログインを行った後、Forms認証などの枯れた仕組みを使用して認証チケットを発行すれば良い。 -Web APIの認証も、[[OAuth]] 2.0等が前提でない限りForms認証のCookie認証チケットを使用すればイイ。 *B2C対応の認証サイト構築フレームワーク [#m0e95e60] B2Cの認証サイトに必要な機能が充実している[[ASP.NET Identity]]が有用である。 ---- Tags: [[:認証基盤]], [[:Active Directory]], [[:クレームベース認証]]