当身份验证发生在子域而不是父域时,是否可以跨子域验证用户?
例如:
用户登录到site1.parent.com,然后我们需要将它们发送到reporting.parent.com.
即使在子域中发生登录,我是否可以对报告站点进行身份验证?
到目前为止,我所做的所有研究都让用户首先登录到父域,然后每个子域都可以访问身份验证cookie.
我想在auth cookie的用户数据部分中存储一些数据,如用户昵称和用户ID(表主键).我这样做的原因是在浏览器关闭时保留这些数据,而无需用户重新登录.
编辑:哎呀!意识到我没有很好地解释自己.我不是试图根据他们的cookie重新验证用户.用户已经通过ASP.Net的会员系统进行了身份验证 - 这部分很好.我的问题是,如果我想显示用户的昵称,例如,我必须触发另一个SQL查询,然后将其存储在会话中.我认为将这些信息存储在UserData部分中的auth cookie(再次,由ASP.Net创建的那个)中是有意义的,这似乎是为此目的而创建的.
我不想使用配置文件,因为我有自己的用户表和配置文件数据,我需要一个轻量级的解决方案.
在auth cookie的用户数据部分对这些数据进行编码的好方法是什么?我在想序列化,但这可能有点过分.我是以错误的方式来做这件事的吗?
通常我保护我的动作,[Authorize]但这次我需要检查用户是否在行动中获得授权.
例如
if(userIsAuthorized) {
//do stuff
}
else {
//return to login page
}
Run Code Online (Sandbox Code Playgroud)
我相信我正在使用'表单身份验证'
这个问题与此类似,但没有一个答案似乎有效.
编辑:我已经做了一些挖掘 - 似乎我在一个Action上断点[Authorize],User.Identity已设置,但是在没有它的Actions上,User.Identity为空,即使我已登录
我有一个ASP.NET站点,必须使用表单身份验证而不是Windows身份验证来访问ActiveDirectoryMembershipProvider.该站点必须使用表单,因为它们需要设计的输入表单,而不是Windows身份验证使用的浏览器身份验证弹出窗口.
该站点需要模拟通过Active Directory登录的用户访问用户特定文件.
但是,WindowsIdentity.GetCurrent()由于是不一样的HttpContext.Current.User.Identity,虽然我的web.config包括:
<authentication mode="Forms">
<forms loginUrl="login.aspx" timeout="480"/>
</authentication>
<identity impersonate="true" />
Run Code Online (Sandbox Code Playgroud)
我无法使用LoginUser(),WindowsIdentity.Impersonate()因为我需要冒充AD用户来获取他们的特定权限,而我不知道用户的密码,因为Forms负责登录.
是否可以从login.aspx.cs获取System.Web.UI.WebControls.Login.Password,然后将LoginUser()令牌保存在会话变量中以供WindowsIdentity.Impersonate()日后使用?或者可能采用更安全的方法冒充正确的方法?
我很困惑为什么表单身份验证不能自动 <identity impersonate="true" />
我已阅读此http://msdn.microsoft.com/en-us/library/ms998351.aspx但它使用Windows身份验证.
asp.net impersonation forms-authentication active-directory windows-authentication
我有两个域名,domain1.com和domain2.com指向同一个asp.net网站,该网站在表单身份验证中使用asp.net build.问题是,即使域指向同一网站,用户也只能一次对一个域进行身份验证.因此,如果他首先使用www.domain1.com然后访问www.domain2.com,那么后面的网站就是同一个网站,但他只对www.domain1.com进行了身份验证.如果他在访问网站时使用www而不是www,也会发生同样的事情.
这是我用来登录的:
FormsAuthentication.RedirectFromLoginPage(username, cookie.Checked);
Run Code Online (Sandbox Code Playgroud)
要检查登录:
User.Identity.IsAuthenticated
Run Code Online (Sandbox Code Playgroud)
如何让用户获得针对指向同一网站的所有域的身份验证?
是否可以使用jQuery ajax调用来执行ASP.NET MVC的表单身份验证?我一直都找不到这样的例子.
更具体地说,如何在页面上设置auth cookie(没有重定向),以便我可以进行连续的经过身份验证的ajax请求?
我正在尝试编写一个ASP.NET MVC应用程序,它是我们的CRM的前端,它具有SOAP Web服务.我希望用户使用他们的CRM用户名和密码登录我的Web应用程序,然后针对CRM进行身份验证,在页面上进行Web服务调用等.
我开始考虑使用表单身份验证和实现自定义成员资格提供程序 - 我可以实现我需要的所有方法ValidateUser(),但我遇到的问题是登录到CRM Web服务后,您将获得一个必须的令牌每次后续的Web服务调用都会通过,我不知道我可以在哪里存储它.
所以我的问题是:
任何意见,将不胜感激
此代码来自asp.net mvc RTM源代码
谁设置了HttpContext.User.Identity的IsAuthenticated属性?
protected virtual bool AuthorizeCore(HttpContextBase httpContext) {
if (httpContext == null) {
throw new ArgumentNullException("httpContext");
}
IPrincipal user = httpContext.User;
if (!user.Identity.IsAuthenticated) {
return false;
}
}
Run Code Online (Sandbox Code Playgroud)
是通过调用方法设置IsAuthenticated属性(asp.net mvc 4.0示例项目):
FormsAuthentication.SetAuthCookie(model.UserName, model.RememberMe);
Run Code Online (Sandbox Code Playgroud)
当我在上面的FormsAuth ...方法调用之后调试asp.net mvc 4.0示例项目的LogOn方法的代码时.执行
User.Identity.IsAuthenticated
Run Code Online (Sandbox Code Playgroud)
仍然返回FALSE.只有当我调试LogOff方法时
User.Identity.IsAuthenticated
Run Code Online (Sandbox Code Playgroud)
说真的.那么谁将这个属性设置为TRUE和WHEN?
更新:
这是关于FORMS身份验证!
我现在调试了asp.net mvc示例项目的LogOn方法,并在返回LogOn操作后,调用了我重写的AuthorizeCore方法,然后IsAuthenticated属性为TRUE!
TRUE的设置是否依赖于ModelState.Value.Error集合?
如果错误集合中的count == 0,则IsAuthenticated为TRUE,否则IsAuthenticated为FALSE
你能证实吗?
我正在使用FormsAuthenticationTicket并放置数据并将数据传递到所有页面.如果我们不更改任何数据,它将起作用.
所以,现在如果我想更改数据并将其传递给cookie并加密,那么如何以编程方式更改数据.
请给我一个以HttpCookie编程方式更改数据的解决方案.
我在事件日志中多次收到此错误,并且用户已注销.
事件代码:4005
事件消息:请求的表单身份验证失败.原因:提供的故障单已过期.
活动时间:3/10/2011 3:35:22 PM
活动时间(UTC):3/10/2011 8:35:22 PM
活动ID:fc2f70cc85014b0ca7dbb01471617b66
活动顺序:3392
活动开始:1
活动详情代码:50202
思考: