FormsAuthenticationTicket上Version属性的目的/含义是什么?
我是AngularJS的新手,并试图为我的新Web应用程序评估它.
我将有一个ASP.NET Web API,它将从Android,iPhone和Web应用程序(ASP.NET MVC)中使用.ASP.NET Identity将在Web API中实现.所有三个应用程序都将调用Web API的登录方法来获取身份验证令牌.
我的问题是如何让ASP.NET MVC 服务器端身份验证工作(与Web API同步,所以我不必单独登录ASP.NET MVC),而Angular调用获取HTML模板/视图,JavaScript文件或其他资源.我已经浏览了很多关于AngularJS的文章和博客,但仍无法找到符合我要求的安全模型.
最好是直接对ASP.NET MVC应用程序而不是Web API进行登录调用,并且ASP.NET MVC应用程序会调用Web API进行登录,并且一旦通过身份验证,就会在会话中保存身份验证令牌并创建一个FormsAuthentication cookie和cookie数据保存加密的身份验证令牌.此外,在HTML格式的ng-init中设置auth令牌,以在AngularJS范围内拥有令牌.现在,当AngularJS尝试调用ASP.NET MVC应用程序来获取HTML时,通过将cookie解密数据与会话中的auth数据进行匹配来验证/授权用户.此外,AngularJS将在头文件中发送auth令牌,以直接调用Web API方法,以便通过Web API进行数据操作的所有后续调用.
asp.net-mvc forms-authentication asp.net-web-api angularjs asp.net-identity
我在IIS7中使用表单身份验证来密码保护开发站点,但是当站点仅包含静态HTML文件+ login.aspx + web.config 时,身份验证似乎被绕过.
当我将文件重命名为.aspx时,我提示登录表单我没有做任何花哨的事情.我有一个非常简单的登录脚本,之后它应该重定向到index.html.
有什么建议?总而言之,整个站点使用HTML(目前)并且需要受密码保护.
<authentication mode="Forms">
<forms name="appNameAuth" path="/" loginUrl="~/login.aspx" defaultUrl="index.html" protection="All" timeout="525600">
<credentials passwordFormat="Clear">
<user name="[user]" password="[password]" />
</credentials>
</forms>
</authentication>
<authorization>
<deny users="?" />
</authorization>
Run Code Online (Sandbox Code Playgroud) 由于此过程的文档非常模糊且令人困惑(或过时),我想验证我是否正确执行并且没有遗漏任何步骤.
我正在尝试创建一个安全的登录系统,在浏览器关闭时到期.
- 在我的web.config中我有以下内容 -
<authentication mode="Forms">
<forms loginUrl="~/Login.aspx" defaultUrl="Index.aspx" name=".ASPXFORMSAUTH" timeout="100" />
</authentication>
<authorization>
<allow users="?" />
</authorization>
<machineKey decryption="AES" validation="SHA1" validationKey.......... />
Run Code Online (Sandbox Code Playgroud)
所以我有一个带有用户名/密码文本框的登录表单和这个按钮:
<asp:Button ID="LoginButton" runat="Server" OnClick="Login_Authenticate" Text="Sign in" />
Run Code Online (Sandbox Code Playgroud)
在Login_Authenticate内部我执行以下操作:
protected void Login_Authenticate(object sender, EventArgs e){
string userName = UserName.Text;
string password = Password.Text;
bool Authenticated = false;
// Here's code that makes sure that Username and Password is CORRECT
if(AuthClass.Authenticate(userName, password)){
Authenticated = true;
}
// error checking does happen here.
if (Authenticated)
{
FormsAuthenticationTicket ticket …Run Code Online (Sandbox Code Playgroud) 我试图了解Windows身份验证,表单身份验证及其差异的概念.我很迷惑.有人可以帮我澄清一下.
谢谢.
windows authentication forms-authentication windows-authentication
昨晚,一位客户打来电话,因为谷歌已经缓存了私人员工信息的版本.除非您登录,否则无法获取相关信息.
他们对Google域名进行了搜索,例如:
site:example.com
Run Code Online (Sandbox Code Playgroud)
并注意到Googled已经抓取并缓存了一些内部页面.
自己查看页面的缓存版本:
这是谷歌的缓存https://example.com/(F(NSvQJ0SS3gYRJB4UUcDa1z7JWp7Qy7Kb76XGu8riAA1idys-nfR1mid8Qw7sZH0DYcL64GGiB6FK_TLBy3yr0KnARauyjjDL3Wdf1QcS-ivVwWrq-htW_qIeViQlz6CHtm0faD8qVOmAzdArbgngDfMMSg_N4u45UysZxTnL3d6mCX7pe2Ezj0F21g4w9VP57ZlXQ_6Rf-HhK8kMBxEdtlrEm2gBwBhOCcf_f71GdkI1))/ViewTransaction.aspx?transactionNumber=12345.它是2013年9月15日格林尼治标准时间00:07:22出现的页面快照
长网址让我很困惑.而不是:
https://example.com/ViewTransaction.aspx?transactionNumber=12345
Run Code Online (Sandbox Code Playgroud)
插入了一个长字符串:
https://example.com/[...snip...]/ViewTransaction.aspx?transactionNumber=12345
Run Code Online (Sandbox Code Playgroud)
我花了几分钟时间记住:这可能是ASP.net "无cookie会话"的症状.如果您的浏览器不支持Set-Cookie,则该网站会在URL中嵌入cookie.
除了我们的网站不使用它.
即使我们的网站确实自动检测到无cookie会话,并且Google设法将网络服务器哄骗在网址中交付会话,它是如何接管另一个用户的会话的呢?
该网站已被机器人抓取多年.而今年5月29日也没有什么不同.
Google通常会通过检查robots.txt文件(我们没有)来开始抓取.但是没有人被允许在robots.txt没有首先进行身份验证的情况下在网站上做任何准备(包括),所以它失败了:
Time Uri Port User Name Status
======== ======================= ==== ================ ======
1:33:04 GET /robots.txt 80 302 ;not authenticated, see /Account/Login.aspx
1:33:04 GET /Account/Login.aspx 80 302 ;use https plesae
1:33:04 GET /Account/Login.aspx 443 200 ;go ahead, try to login
Run Code Online (Sandbox Code Playgroud)
Google一直在寻找robots.txt文件.它永远不会有一个.然后它返回尝试抓取根:
Time Uri Port User Name Status
======== ======================= ==== …Run Code Online (Sandbox Code Playgroud) 我有一个MVC 4站点,目前正在实现SimpleMembership.在网站的下一次迭代中,我想升级到MVC 5和ASP.NET Identity.这两个站点在web.config中具有相同的机器密钥.SimpleMembership SQL表有一个Password 和 PaswordSalt列,ASP.NET Identity表有一列PasswordHash似乎是Password + PasswordSalt的组合.
我尝试从旧网站连接密码和PasswordSlat,但这不起作用.
我的问题是,
如何将现有用户的密码从旧网站迁移到新网站?
有没有办法动态更改FormsAuthentication的LoginUrl?我所拥有的是受FormsAuth保护的整个站点,但对于子文件夹中的某些页面,我想将用户带到不同的登录页面,并让FormsAuth处理ReturnUrl的内容.这是可能的还是我必须为子文件夹案例编写自己的重定向代码?
这是一个示例布局:
~/LogOn1.aspx
~/Protected1.aspx
~/Protected2.aspx
~/Subfolder/
~/Subfolder/LogOn2.aspx
~/Subfolder/NotProtected.aspx
~/Subfolder/Protected3.aspx
Run Code Online (Sandbox Code Playgroud)
所以我的web.config看起来像:
<forms loginUrl="~/Splash.aspx" ... />
Run Code Online (Sandbox Code Playgroud)
所有受保护的*.aspx页面都有
<deny users="?">
Run Code Online (Sandbox Code Playgroud)
我想要的是,如果用户是匿名的,〜/ Subfolder/Protected3.aspx将被重定向到〜/ Subfolder/LogOn2.aspx.
我确实尝试在〜/ Subfolder/web.config中放置一个精简版的web.config:
<?xml version="1.0"?>
<configuration>
<system.web>
<authentication mode="Forms">
<forms loginUrl="~/Subfolder/LogOn.aspx" name="SiteAuth" protection="All" timeout="30" path="/" defaultUrl="~/Subfolder/default.aspx" requireSSL="true" cookieless="UseCookies" enableCrossAppRedirects="false" />
</authentication>
<authorization>
<deny users="?" />
</authorization>
</system.web>
</configuration>
Run Code Online (Sandbox Code Playgroud)
但所有这些都是我的错误:
在应用程序级别之外使用注册为allowDefinition ='MachineToApplication'的部分是错误的.此错误可能是由于未在IIS中将虚拟目录配置为应用程序引起的.
我认为使Subfolder目录成为一个应用程序会导致更多的问题,但也许我错了.如果它是一个应用程序,是不是将〜/ Subfolder中的所有代码与父应用程序的其余部分分开?
我在这里完全失败了.这工作得早.我有一个使用表单身份验证的MVC3应用程序.在web配置中,我有以下内容:
<authentication mode="Forms">
<forms loginUrl="~/Login/Index" timeout="2880"/>
</authentication>
Run Code Online (Sandbox Code Playgroud)
但是,出于某种原因,当重定向时,或者在检查FormsAuthentication.LoginUrl时,它仍然使用默认的/ Account/Login.哪个不存在.为什么web.config不会覆盖这个?
我在不同端口的localhost上运行了2个网站.由于浏览器在发送cookie时不区分端口号,因此来自一个站点的表单身份验证票据将被发送到另一个站点
我该如何解决这个问题?我认为一个好的解决方案是更改表单身份验证票证或其中一个网站,但我不知道如何执行此操作.