「[[マイクロソフト系技術情報 Wiki>http://techinfoofmicrosofttech.osscons.jp/]]」は、「[[Open棟梁Project>https://github.com/OpenTouryoProject/]]」,「[[OSSコンソーシアム .NET開発基盤部会>https://www.osscons.jp/dotNetDevelopmentInfrastructure/]]」によって運営されています。

-[[戻る>WS-Federation]]

* 目次 [#g0f79145]
#contents

*概要 [#q6608b2f]
WIF:Windows Identity Foundation

-Windows Identity Foundation の概要~
https://msdn.microsoft.com/ja-jp/library/ee748475.aspx

--Windows Identity Foundation (WIF) は、[[クレームベース認証]]に対応のアプリケーションを構築するためのフレームワークです。 
--このフレームワークは、WS-Trust プロトコルと [[WS-Federation]] プロトコルを抽象化し、~
セキュリティ トークン サービスと要求に対応したアプリケーションを構築するための API を開発者に提供します。
--アプリケーションでは、WIF を使用して、STSから発行されたトークンを処理し、~
RP(Web アプリケーションまたは Web サービス)でクレームベースの決定を下すことができます。

※ [[.NET Core]]では「[[Microsoft.AspNetCore.Authentication.WsFederation>ASP.NET Core Identity#scbc320a]]」を使用するもよう。

*Protocol [#ne8c83d2]

**[[WS-FED>WS-Federation]] [#iee0ad36]
サポートあリ。

アサーションはSAMLやJWTを選択可能。

-.NETで使えるアイデンティティ連携のためのライブラリまとめ(後編) - Build Insider~
http://www.buildinsider.net/web/msidentitydev/02
>セキュリティ・フォーマットの処理について、前述したSAML AssertionはWIFで処理することが可能だが、~
JWTについてはNuGetで配布されている「JSON Web Token Handler For the Microsoft .Net Framework 4.5」~
(本執筆時点では開発者プレビュー版)を使用することで処理可能だ。

**[[SAML]] [#q6b784d8]
Extensionでサポートしているようですが、更新が、CTPで止まっているらしいです。

-Understanding Windows Identity Foundation (WIF) 4.5 > SAML 2.0 - CodeProject~
https://www.codeproject.com/Articles/504399/Understanding-Windows-Identity-Foundation-WIF#7
>WIF does not support SAML-P, although some time ago an extension to WIF that adds SAML 2.0 support was CTP’ed~
but has not took off since then. Here you can see the announcement:

-Working with SAML 2.0 in C# .NET 4.5 - Stack Overflow~
https://stackoverflow.com/questions/15530184/working-with-saml-2-0-in-c-sharp-net-4-5
>That's because Saml2Assertion refers to the token not the protocol.~
The SAML token used in WIF is a 1.0 token.~
There is no SAML 2 protocol support in .NET.~
There is a WIF CTP for SAML 2 but it hasn't been upgraded for ages.

-IdM実験室: [Azure/SAML]Azure Webアプリにお手軽テスト用SAML SPをデプロイする~
http://idmlab.eidentity.jp/2015/04/azuresamlazure-websaml-sp.html
>※WIFとかADALがちゃんとSAMLを喋れればいいんですが、~
ws-federation/OpenID Connectなんで実はSAML SPってぽっかり穴が空いています。

*FedUtil [#x7272b98]
RPと STSとの間で信頼を簡単に確立できる。

**準備 [#i887b60a]
***STS側の構築 [#a2f6dc3d]
-STS([[ADFS>フェデレーション サービス (AD FS)]])側の構築を完了させておく。
-STSのエンドポイントのFQDNとサーバ証明書のCN(Common Name)は一致させておく。

***前提ソフトウェアをインストール [#la3c9614]
RPで以下の前提ソフトウェアをインストールする。

-IIS
-ASP.NET 3.5 and ASP.NET 4.5 
-.NET Framework 3.5 Features and Windows Identity Foundation 3.5 options.

***SDKのダウンロードとインストール [#r6ea59df]
RPでSDKのダウンロードとインストールをする。

-Download the Windows Identity Foundation SDK~
これは、サンプルのクレームベース認証アプリケーションを含みます。~
http://www.microsoft.com/download/details.aspx?id=4451

-WindowsIdentityFoundation-SDK-4.0.msi ファイルを実行して、~
Windows Identity Foundation SDK 4.0をデフォルトオプションでインストール。

***STS側のエンドポイントの証明書を検証 [#ydb0d746]
STS側の認証連携を行うHTTPSのエンドポイントの証明書が~
自己証明書の場合、RPから以下の手順を実施して検証できる。

-フェデレーション・メタデータを交換するSTSのHTTPSエンドポイントに~
インターネット・エクスプローラーを使用してアクセスする。
-証明書が自己証明書の場合、アドレスバーに証明書のエラーが表示されるのでこれをクリックする。
-[証明書は信頼できません]ダイアログ・ボックスで[証明書の表示]を押下。
-[証明書のインストール]ボタンを押下して以下のストアに証明書をインストールする。
--ストア:[ローカル コンピューター]の[信頼されたルート証明機関]

***サンプルのクレームベース認証アプリケーションをIIS配下でホスト [#d777cdea]
以下のサンプルを利用可能
-[[Windows Identity Foundation SDK>http://www.microsoft.com/download/details.aspx?id=4451]]に付属のサンプル。
-https://github.com/OpenTouryoProject/SampleProgram/tree/master/ASPNET/ID-Federation/ClaimsWeb_sample
-https://github.com/OpenTouryoProject/SampleProgram/tree/master/ASPNET/AuthN_AuthZ/ID-Federation/ClaimsWeb_sample

**実行 [#if202ede]
WIFのインストール・ディレクトリに移動してFedUtil.exeを実行する。

-C:\Program Files (x86)\Windows Identity Foundation SDK\v4.0 folder.
-FedUtil.exeファイルをダブル・クリックして実行する。

Webアプリケーション・プロジェクトを右クリックし、~
[Add STS reference]を選択でもFedUtil.exeを実行可能なもよう。

**設定 [#l3f054ab]

***Welcome画面 [#f576a873]
-[Application configuration location]テキスト・ボックス~
Webアプリケーションのweb.configを設定する。
Webアプリケーションの[[Web.config>.NET config#u3d1af27]]を設定する。

-[Application URI]テキスト・ボックス~
WebアプリケーションのURL(仮想ディレクトリ)を設定する。

-[Next]ボタンをクリック。

***[Security Token Service]画面 [#s1b4185c]
-[Use an existing STS]オプション・ボタンを選択する。
-STS WS-Federation metadata document locationテキスト・ボックスに入力~
e.g. : https://[ADFSのFQDN名]/federationmetadata/2007-06/federationmetadata.xml

-[Next]ボタンをクリック。

***[STS signing certificate chain validation error]画面 [#b03d522e]
-証明書が自己証明書の場合、~
[Disable certificate chain validation]オプション・ボタンを選択する。
-証明書を正規の認証局が発行した場合、~
[Enable certificate chain validation]オプション・ボタンを選択する。

-[Next]ボタンをクリック。

***[Security token encryption]画面 [#e526657d]
-暗号化が不要~
[No encryption]オプション・ボタンを選択する。
-暗号化が必要~
[Encryption]オプション・ボタンを選択する。
--証明書を選択する。

-[Next]ボタンをクリック。

***[Offered claims]画面 [#e10feee6]
-ADFS2.0 (STS) から提供される クレームの一覧が表示される。
-[Next]ボタンをクリック。

***[Summary]画面 [#lcb65153]
Summary 画面が表示されるので、内容を確認して、 Finish ボタンをクリック。

***結果の確認 [#qe970ae9]
-web.config と FederationMetadata.xml が作成(or 更新) される。
--web.config
-[[Web.config>.NET config#u3d1af27]] と FederationMetadata.xml が作成(or 更新) される。
--[[Web.config>.NET config#u3d1af27]]
---claimTypeRequired 要素:要求するクレームの種類を変更できる。

--FederationMetadata.xml
---FedUtil.exe を /u オプションを指定してWeb.config の内容で FederationMetadata.xml を更新する。
---FedUtil.exe を /u オプションを指定して[[Web.config>.NET config#u3d1af27]] の内容で FederationMetadata.xml を更新する。
 %FEDUTILPATH%\FedUtil.exe /u Web.config

-Trust managemet に Schedule a task to perform daily [[WS-Federation]] metadata updatesの日時更新タクスが登録される。
-Trust managemet に 下記の日時更新タクスが登録される。
>Schedule a task to perform daily [[WS-Federation]] metadata updates

**参考 [#xa98b7ae]


-FedUtil を使用した ASP.NET 証明書利用者アプリケーションから STS への信頼の確立~
https://msdn.microsoft.com/ja-jp/library/ee517285.aspx

***Netplanetes [#bf4d9913]
-[WIF] ADFS2.0 を使用する クレーム対応 Web アプリケーションを作成する - Netplanetes
--その1~
http://www.pine4.net/Memo/Article/Archives/408
--その2~
http://www.pine4.net/Memo/Article/Archives/409
--その3~
http://www.pine4.net/Memo/Article/Archives/410

***サンプル [#ze5b2cba]
-ASPNET/ID-Federation/ClaimsWeb_sample~
https://github.com/OpenTouryoProject/SampleProgram/tree/master/ASPNET/ID-Federation/ClaimsWeb_sample
https://github.com/OpenTouryoProject/SampleProgram/tree/master/ASPNET/AuthN_AuthZ/ID-Federation/ClaimsWeb_sample

----
Tags: [[:認証基盤]], [[:クレームベース認証]], [[:.NET開発]], [[:ASP.NET]]


トップ   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS