标签: forms-authentication

获取Forms身份验证中的用户名

我正在使用Forms身份验证.

在Windows身份验证中获取我使用的PC的用户名: User.Identity.Name

我也需要在Forms身份验证中使用此信息,但User.Identity.Name不起作用.

如何在不使用Windows身份验证的情况下获取User.Identity.Name?

c# asp.net forms-authentication windows-authentication

33
推荐指数
1
解决办法
4万
查看次数

在两个Web应用程序之间共享验证

我有一个在ie下运行的基本网站(Asp.net WebForms应用程序).

http://localhost:90/
Run Code Online (Sandbox Code Playgroud)

然后我创建了一个新的(这次是Asp.net MVC)应用程序并添加了它

http://localhost:90/mvc/
Run Code Online (Sandbox Code Playgroud)

但不仅仅是作为一个简单的虚拟文件夹,而是作为一个应用程序文件夹,通过定义一个不同的应用程序池来运行它,与应用程序相比.

由于浏览器无法知道基本上在同一个域上有两个不同的应用程序,它的工作方式如下:

  1. 用户访问 http://localhost:90/
  2. 父app将用户重定向到表单身份验证屏幕
  3. 用户成功登录
  4. 父网站添加了身份验证cookie
  5. 用户访问 http://localhost:90/mvc
  6. 浏览器从父应用程序附加相同的cookie

我是否有可能根据同一个cookie对用户进行身份验证?我将配置我的MVC应用程序登录重定向到父应用程序以具有共享身份验证屏幕.但是我想知道从那时起谁经过认证和工作.

我已经阅读了一些关于共享相同system.web/machineKey值以提供此类功能的内容,但我想要一些真实世界的示例.

我知道这两个应用程序将无法共享会话状态,这不是问题,因为我不希望它们.我想要的只是一种单一登录(SSO/SSS)

这可能吗?怎么样?

重要

我已经阅读了有关此问题的其他问题/答案,但他们要么是询问跨域/跨服务器等.这个问题都在同一个IIS网站上.

iis-7 shared forms-authentication

32
推荐指数
2
解决办法
2万
查看次数

如何允许匿名用户访问MVC中的某个给定页面?

我在ASP.NET MVC Web应用程序中启用了表单身份验证.我想允许匿名用户只访问某些特定页面,例如Register.cshtml.通过这样做,我能够允许从我的根web.config访问我的CSS文件.

<location path="Content/Site.css">
    <system.web>
        <authorization>
            <allow users="*"/>
        </authorization>
    </system.web>
</location>
Run Code Online (Sandbox Code Playgroud)

现在我想允许匿名访问其他页面,如Home和Register.有人知道如何实现这个目标吗?

c# asp.net-mvc forms-authentication

31
推荐指数
2
解决办法
5万
查看次数

Thread.CurrentPrincipal声称不正确

我看到我的服务器上的请求似乎是由一个无关的客户端发出的,虽然我确定它们是由经过身份验证的用户制作的 - 我有fiddler日志显示客户端发送了有效的asp.net auth cookie和服务器日志表明cookie已到达且有效.所有浏览器都出现了这个问题.

数据流是:

  1. 用户访问登录URL,在属于webfarm的计算机上(所有具有相同计算机的密钥,解密密钥)
  2. 在成功的表单身份验证上,用户将重定向到受限制的URL(即其主页)
  3. 主页正确呈现,知道用户的身份,并包含javascript以执行7个异步回发以获取其他数据
  4. Javascript启动7个http.get请求,点击webfarm中的不同机器(假设循环)
  5. 服务器验证请求:~0.01%无法进行身份验证.

思考?

现在详细说明:

极少数的异步请求落在我的服务器上(有证据表明它们没有被操纵或伪造)并且似乎是匿名的.在提出的7个请求中,有些数字可能有效,也可能无效(即5/7会成功,2会失败).成功/失败似乎没有任何模式.在我的请求看起来是匿名的情况下,CurrentPrincipal.Identity记录:

Thread.CurrentPrincipal.Identity.IsAuthenticated; // false
Thread.CurrentPrincipal.Identity.Name; // null (or empty, unsure off hand)
Run Code Online (Sandbox Code Playgroud)

将http.context.request.params集合转储到日志文件中,我能够看到以下相关(和擦除)属性(下面的完整参数):

context: {"userId":10000,"userName":"johnsmith"}
HTTP_COOKIE:.ASPXAUTH=[valid auth cookie value]
HTTP_X_REQUESTED_WITH:XMLHttpRequest
X-Requested-With: XMLHttpRequest
    AUTH_TYPE: 
    AUTH_USER: 
    AUTH_PASSWORD: 
    LOGON_USER: 
    REMOTE_USER: 
    HTTP_COOKIE: .ASPXAUTH=[valid auth cookie value]
Run Code Online (Sandbox Code Playgroud)

我知道auth cookie是有效的 - 在这些相同的请求期间,我能够解密auth cookie并提取以下内容:

CookiePath: /
Expiration: 9/23/2105 8:14:22 PM
Expired: False
IsPersistent: True
IssueDate: 8/30/2010 2:54:22 PM
Name: johnsmith
UserData: 
Version: 2
Run Code Online (Sandbox Code Playgroud)

不知道如何继续这一点.我们最近迁移到mvc 2.0/asp.net 4.0似乎加剧了这个问题,但我的信心并不高.

我已经联系了一些有这个问题的客户,而且这更令人沮丧(但确实反映了我在日志中能够阅读的内容).一旦进入这种状态,就很难摆脱它.清除缓存和cookie似乎没有任何效果.但是,切换到新的浏览器,一般都可以.同样地,等待几个小时并使用相同的浏览器返回它也一般都可以,但并非总是如此.如前所述,所有浏览器都可以看到这种情况.

有什么建议?
凯文




------------
以下是我捕获的日志片段的剩余部分(为pii擦除):

8/30/2010 2:54:43 PM: …
Run Code Online (Sandbox Code Playgroud)

c# asp.net authentication asp.net-mvc forms-authentication

30
推荐指数
1
解决办法
9478
查看次数

防止IIS通过ASP.NET管道提供静态文件

我的css,js,图像文件的请求正在通过ASP.NET管道提供.我认为IIS默认避免这种情况,但是我在Application_AuthenticateRequest断点上看到了请求,并且不需要实际验证这些请求.我看到了改变这种行为的相互矛盾的方法 - 最好的方法是什么?

asp.net-mvc forms-authentication static-files iis-7.5

30
推荐指数
2
解决办法
2万
查看次数

MVC Forms LoginUrl不正确

我有一个带有表单身份验证的ASP.NET MVC 3应用程序.由于某些我无法看到的原因,登录重定向网址/Account/Login?ReturnUrl=%2fSecure%2fAction代替/Account/LogOn?ReturnUrl=%2fSecure%2fAction.区别很小,它使用/ Account/Login而不是/ Account/LogOn.

我的web.config表单部分是正确的.否则可能会影响登录网址?

<authentication mode="Forms">
  <forms loginUrl="~/Account/LogOn" timeout="720" />
</authentication>
Run Code Online (Sandbox Code Playgroud)

asp.net-mvc forms-authentication asp.net-mvc-3

29
推荐指数
4
解决办法
2万
查看次数

有些黑客可以从用户那里窃取cookie并在网站上使用该名称登录吗?

读这个问题

不同的用户在aspxanonymous中获得相同的cookie值

并且我开始思考,如果某个人可以通过某种方式真正窃取cookie,然后将其放在他的浏览器上,登录就可以说是管理员了.

您是否知道表单身份验证如何确保即使cookie被存储,黑客也不会使用它进行实际登录?

或者你知道其他任何自动防御机制吗?

先谢谢你.

asp.net security cookies forms-authentication

27
推荐指数
2
解决办法
2万
查看次数

Asp.Net Core - 最简单的表单身份验证

我有这个旧的MVC5应用程序,它以最简单的形式使用表单身份验证.web.config中只存储一个帐户,没有角色等.

<authentication mode="Forms">
  <forms loginUrl="~/Login/Index" timeout="30">
    <credentials passwordFormat="Clear">
      <user name="some-user" password="some-password" />
    </credentials>
  </forms>
</authentication>
Run Code Online (Sandbox Code Playgroud)

登录例程只是调用

FormsAuthentication.Authenticate(name, password);
Run Code Online (Sandbox Code Playgroud)

就是这样.在asp.net核心中是否有类似的(在简单性方面)?

c# asp.net-mvc forms-authentication asp.net-core

27
推荐指数
2
解决办法
2万
查看次数

ASP.Net在Auth Cookie中存储用户数据

我想在auth cookie的用户数据部分中存储一些数据,如用户昵称和用户ID(表主键).我这样做的原因是在浏览器关闭时保留这些数据,而无需用户重新登录.

编辑:哎呀!意识到我没有很好地解释自己.我不是试图根据他们的cookie重新验证用户.用户已经通过ASP.Net的会员系统进行身份验证 - 这部分很好.我的问题是,如果我想显示用户的昵称,例如,我必须触发另一个SQL查询,然后将其存储在会话中.我认为将这些信息存储在UserData部分中的auth cookie(再次,由ASP.Net创建的那个)中是有意义的,这似乎是为此目的而创建的.

我不想使用配置文件,因为我有自己的用户表和配置文件数据,我需要一个轻量级的解决方案.

在auth cookie的用户数据部分对这些数据进行编码的好方法是什么?我在想序列化,但这可能有点过分.我是以错误的方式来做这件事的吗?

membership asp.net authentication forms-authentication

26
推荐指数
2
解决办法
3万
查看次数

AJAX和FormsAuthentication,如何阻止FormsAuthentication覆盖HTTP 401?

在使用FormsAuthentication配置的一个应用程序中,当用户访问没有auth cookie或过时的访问受保护页面时,ASP.NET会发出HTTP 401 Unauthorized,然后FormsAuthentication模块在请求结束前拦截此响应,并将其更改为HTTP 302 Found,设置HTTP标头"Location:/ path/loginurl"以便将用户代理重定向到登录页面,然后浏览器转到该页面并检索登录页面,该页面未受保护,获取HTTP 200好的.

当AJAX没有被考虑时,这确实是一个非常好的主意.

现在我在我的应用程序中有一个返回JSON数据的URL,它需要用户进行身份验证.一切运作良好,问题是如果auth cookie到期,当我的客户端代码调用服务器时,它将获得HTTP 200 OK和登录页面的html,而不是HTTP 401 Unauthorized(因为之前解释过).然后我的客户端试图将登录页面html解析为json,并失败.

那么问题是:如何应对来自客户端的过期身份验证?应对这种情况的最优雅解决方案是什么?我需要知道调用何时成功,我想使用HTTP语义来实现.

是否可以以安全的跨浏览器方式从客户端读取自定义HTTP标头?如果请求是AJAX请求,有没有办法告诉FormsAuthenticationModule不执行重定向?有没有办法使用HTTP标头覆盖HTTP状态,就像覆盖HTTP请求方法一样?

我需要Forms身份验证,我想避免重写该模块或编写自己的表单身份验证模块.

问候.

asp.net ajax jquery forms-authentication http

26
推荐指数
3
解决办法
7073
查看次数