web-dev-qa-db-ja.com

ASP.Net Core SAML認証

ASP.Net CoreソリューションにSAML 2.0認証を追加しようとしています。この件に関するドキュメントが見つからないため、どこから始めればよいかわかりません。おそらくそこにドキュメントがありますが、私はこれについて専門家になるために3日間費やしたくありません。

ASP.Net Coreが古いOWINアセンブリ/名前空間から何かを変えたのがわかります。 Kentor.AuthServices などのSAML 2.0実装を簡素化するサードパーティライブラリがあります。

これをASP.Net 5 RC 1/ASP.Net Coreと組み合わせる方法がわかりません。たとえば、SQLでAspNet *テーブルを使用します。

ASP.Net 5 RC 1には、認証(クライアント)を実装するためのいくつかのライブラリが付属しています。

例えば:

これらの実装は、_Startup.cs_で簡単な拡張メソッドを呼び出すことの問題です。

_app.UseIdentity()
.UseFacebookAuthentication(new FacebookOptions
{
    AppId = "ID",
    AppSecret = "KEY"
})
.UseGoogleAuthentication(new GoogleOptions
{
    ClientId = "ID",
    ClientSecret = "SECRET"
})
.UseTwitterAuthentication(new TwitterOptions
{
    ConsumerKey = "KEY",
    ConsumerSecret = "SECRET"
});
_

それが完了すると、ASP.Netサンプルプロジェクトはログイン/管理アカウントのソーシャルボタンを自動的に表示します。

Social buttons

バックエンドコードでは、var otherLogins = _signInManager.GetExternalAuthenticationSchemes().Where(auth => userLogins.All(ul => auth.AuthenticationScheme != ul.LoginProvider)).ToList();を使用して認証プロバイダーが取得されます。これは、認証プロバイダーが_signInManager.GetExternalAuthenticationSchemes()を呼び出すことで利用できるように登録されていることを意味します。

ASP.Net 5 RC1/ASP.Net CoreでSAML 2.0認証を実装するにはどうすればよいですか?

23
Tedd Hansen

私の知る限り、ASP.NET Core用のSAML2実装はありません。 Kentor.AuthServices用のASP.NET Coreミドルウェアを作成する予定です(私はメンテナーです)が、まだ計画中です。

https://github.com/KentorIT/authservices/pull/489 にASP.NET Coreミドルウェアの動作プロトタイプがあります。テストが追加されると、公式リリースに含まれます。

また、このようなミドルウェアはASP.NET Coreセキュリティモデルと互換性がありますが、.NET Coreではなく完全な.NET Frameworkでのみ実行されることを知っておくことも重要です。その理由は、System.IdentityModelのSignedXmlおよびSAML2サポートが.NET Coreでまだ利用できないためです。

10
Anders Abel

これはおそらく基本的にAnders Abelの回答の更新バージョンですが、

https://github.com/Sustainsys/Saml2 を使用しました。彼らは「Sustainsys.Saml2.AspNetCore2」と呼ばれる36kのダウンロードを含むnugetパッケージを持っています。

ここには.netコアIDを使用する便利なサンプル.netコアアプリがあります。 https://github.com/Sustainsys/Saml2/tree/master/Samples/SampleAspNetCore2ApplicationNETFramework (見てstartup.csおよび実装の詳細については、外部ログインかみそりページもご覧ください)。

また、ニーステストIdPをここでホストしています https://stubidp.sustainsys.com 。そうすれば、アプリのACS(Assertion Consumer Service)エンドポイントがログインページなどと連携して動作することを確認できます。

彼らはgithubで次のように言及しています。「ライブラリは以前はKentor.AuthServicesという名前でした。」

0
JohnnyFun