Sha*_*ean 50 rest asp.net-mvc asp.net-web-api
我如何使用ASP.NET Web API开始编码身份验证,因此它是跨平台的,以支持桌面,移动和Web?我读过一些做RESTful身份验证的方法,比如在标题中使用标记.
是否有任何使用此方法的示例项目?
问题:
[Authorize]属性以读取令牌?cec*_*lip 42
我认为令牌将是一个可靠的方式.表单身份验证基于Web的Cookie.不过,对于所有非浏览器客户端来说,这不是最有意义
我建议的是创建一个自定义AuthorizationFilterAttribute并重写OnAuthorization方法.在该方法中,您可以检查是否存在您在提供有效凭据后发给客户端的令牌.您可以在要验证的任何方法或控制器上使用此属性.以下是您可能会参考的示例
public class AuthorizeTokenAttribute : AuthorizationFilterAttribute
{
public override void OnAuthorization(HttpActionContext actionContext)
{
if (actionContext != null)
{
if (!AuthorizeRequest(actionContext.ControllerContext.Request))
{
actionContext.Response = new HttpResponseMessage(HttpStatusCode.Unauthorized) { RequestMessage = actionContext.ControllerContext.Request };
}
return;
}
}
private bool AuthorizeRequest(System.Net.Http.HttpRequestMessage request)
{
bool authorized = false;
if (request.Headers.Contains(Constants.TOKEN_HEADER))
{
var tokenValue = request.Headers.GetValues("TOKEN_HEADER");
if (tokenValue.Count() == 1) {
var value = tokenValue.FirstOrDefault();
//Token validation logic here
//set authorized variable accordingly
}
}
return authorized;
} }
Run Code Online (Sandbox Code Playgroud)
TOKEN_HEADER只是一个字符串,表示客户端应该为经过身份验证的请求传回的HTTP标头.
让我们来看看吧
另外,请查看John Petersen的这篇文章.使您的ASP.NET Web API安全
Mau*_*ice 21
有许多方法可以为REST服务验证用户身份.使用令牌是可能的,但只使用基本身份验证更简单,并且可以作为标准和跨平台.
不要将授权与身份验证混淆.[Authorize]属性是关于授权的,但仅在用户使用其他机制进行身份验证之后.如果不先进行适当的身份验证,授权就完全没用了.
最好的资源是Dominick Baier,他是这方面的专家.
| 归档时间: |
|
| 查看次数: |
18465 次 |
| 最近记录: |