sha*_*ary 5 asp.net wif single-sign-on
我已经在我的两个Web域上成功地将SSO与WIF集成在一起.现在我要求某些用户使用SSO登录,而其他用户不使用SSO.我怎么能做到这一点?
非常感谢你的帮助,
谢谢
Shahram Javed
Cra*_*ste 12
你的问题有点模糊,所以这可能不是正确的答案.让我把我们的故事(Eugenio所帮助的)与它帮助OP或其他人的希望联系起来.我正在解释"不为其他用户",因为有些用户不使用SSO:可能他们使用表单身份验证或其他不同的东西.
我们在Web应用程序中使用WIF进行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);
Run Code Online (Sandbox Code Playgroud)
我们的Web应用程序使用单个可信提供程序(与N个联合伙伴协商的ADFS服务器).我们需要一种自定义方式来决定是将未经身份验证的用户重定向到"登录"页面还是将ADFS重定向到SSO用户.我们禁用被动重定向,因此WIF不会自动将人员发送到ADFS.
<wsFederation passiveRedirectEnabled="false"
issuer="https://adfs.ourplace.com/adfs/ls/"
realm="http://www.ourplace.com" .../>
Run Code Online (Sandbox Code Playgroud)
从这里我们使用身份验证属性(我们使用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();
}
}
Run Code Online (Sandbox Code Playgroud)
在未经身份验证时确定用户是否是SSO用户是Home Realm Discovery问题.不同的人以不同的方式解决 对于我们来说,当SSO用户首次使用SSO连接到系统时,我们会在其主域(这是ADFS中的声明提供者标识符)中放置一个持久性cookie.如果cookie不存在,他们会转到登录.如果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));
Run Code Online (Sandbox Code Playgroud)
如果直接重定向到N个联盟伙伴,可以将令牌续订URL存储在cookie中.
| 归档时间: |
|
| 查看次数: |
3266 次 |
| 最近记录: |