私は正常に私の2つのWebドメインでWIFとSSOを統合しました。今私はいくつかのユーザーがSSOを使用してサインオンし、他のユーザーがSSOを使用しないという要件があります。どのように私はこのことを達成することができますか?シングルサインオンWIFで
私はあなたの質問は少しあいまいですので、多分これが正しい答えではない、
おかげ
Shahram Javed
私は正常に私の2つのWebドメインでWIFとSSOを統合しました。今私はいくつかのユーザーがSSOを使用してサインオンし、他のユーザーがSSOを使用しないという要件があります。どのように私はこのことを達成することができますか?シングルサインオンWIFで
私はあなたの質問は少しあいまいですので、多分これが正しい答えではない、
おかげ
Shahram Javed
をあなたの助けをいただければ幸いです。 OPや他の誰かに役立つことを期待して私たちの話(エウジェニオが助けた)を関連させてください。私は、SSOを使用しないユーザーもいるため、「他のユーザーではない」と解釈しています。フォーム認証や別のものを使用しているようです。
フォーム認証のwif実装バージョンもサポートするWebアプリケーションでは、SSO用にWIFを使用します。
誰かがサインインページにアクセスしてユーザー名とパスワードを入力した場合、WIFを使用して自己発行のClaimsPrincipalを設定します。本質的に、ウェブサイトはそれ自体にクレームを提供している。 FederatedAuthenticationは、FormsAuthenticationが通常と同じ方法で使用されます.FederatedAuthenticationで静的メソッドを使用してCookieを設定します。ビットは異なりますが、基本的に同じプリンシパルです。
var token = FederatedAuthentication.SessionAuthenticationModule
.CreateSessionSecurityToken(claimsPrincipal, "MyApp.Token",
DateTime.UtcNow, DateTime.UtcNow.AddDays(7), false);
FederatedAuthentication.SessionAuthenticationModule
.AuthenticateSessionSecurityToken(token, true);
私たちのWebアプリケーションは、単一の信頼できるプロバイダ(Nのフェデレーションパートナーと交渉するADFSサーバー)を使用します。認証されていないユーザーをサインインページまたはSSOユーザーのADFSにリダイレクトするかどうかを決定するカスタム方法が必要です。パッシブリダイレクトを無効にするため、WIFは自動的に人をADFSに送信しません。
<wsFederation passiveRedirectEnabled="false"
issuer="https://adfs.ourplace.com/adfs/ls/"
realm="http://www.ourplace.com" .../>
ここから、認証属性(私たちはASP.NET MVCを使用しますが、それはあなたに適しています)を使用します。
public class MyAuthorizeAttribute : FilterAttribute, IAuthorizationFilter
{
public void OnAuthorization(AuthorizationContext filterContext)
{
if (filterContext.HttpContext.User.Identity.IsAuthenticated)
return; // all good
RedirectTo(IsSSO() ? GetADFSUrl() : GetSignInUrl();
}
}
認証されていないユーザがSSOユーザであるかどうかを判断するには、ホームレルムディスカバリの問題があります。異なる人々がそれを別々に解決します。 SSOユーザーが最初にSSOを使用してシステムに接続すると、ホームレルム(ADFSのクレームプロバイダID)で永続的なCookieが作成されます。クッキーがない場合、サインインに行きます。クッキーが存在する場合、それらはADFSにリダイレクトされます。 URLは次のとおりです。
var adfsEntryPoint = FederatedAuthentication.WSFederationAuthenticationModule.Issuer;
var wtRealm = FederatedAuthentication.WSFederationAuthenticationModule.Realm;
var whr = <from home realm cookie>
var redirectUrl = string.Format("{0}?wa=wsignin1.0&wtrealm={1}&whr={2}",
adfsEntryPoint,
HttpContext.Server.UrlEncode(wtRealm),
HttpContext.Server.UrlEncode(whr));
Nフェデレーションパートナーに直接リダイレクトする場合は、トークン更新URLをCookieに保存してください。
具体的にお答えください。このレベルの詳細で答えを提供することは困難です。 –
詳しくはこちらをご覧ください。ユーザーは現在どのようにログオンしていますか?どのようにログオンを分割したいですか?これはアクティブかパッシブですか? – nzpcmad