我有一个wcf webhttp服务,它使用表单身份验证来验证用户。如果票证来自cookie集合或URL,则此方法可以正常工作。
但是现在我想在自定义http标头中发送表单auth标签的字符串,并更改表单auth模块以检查该标头而不是cookie。
我认为将表单auth扩展到实现这一点应该很容易,但找不到任何有关如何使用的资源。你能指出我正确的方向吗?
这是我的身份验证流程如何运作,
答案 0 :(得分:3)
FormAuthentication模块不可扩展,但您可以编写自己的身份验证。 这很简单:
认证(2):
var formsTicket = new FormsAuthenticationTicket(
1, login, DateTime.Now, DateTime.Now.AddYears(1), persistent, String.Empty);
var encryptedFormsTicket = FormsAuthentication.Encrypt(formsTicket);
//return encryptedFormsTicket string to client
附加票证的服务电话(4):
var ticket = FormsAuthentication.Decrypt(encryptedFormsTicket)
//extract authentication info from ticket: ticket.Name
答案 1 :(得分:1)
我不确定这是怎么回事(优雅),但是如果在global.asax.cs中为Application BeginRequest添加一个事件并从头部获取字符串并自己将一个cookie注入Request中(然后表单身份验证应该选择它。
类似的东西:
protected void Application_BeginRequest()
{
// Your code here to read request header into cookieText variable
string cookieText = ReadCookieFromHeader();
var cookieData = FormsAuthentication.Decrypt(cookieText);
if (!cookieData.Expired)
{
HttpContext.Current.Request.Cookies.Add(new HttpCookie(cookieData.Name, cookieText));
}
}
免责声明:请注意,我没有对此进行测试,只是按照您的方式进行测试!