如何确保所有调用asp web api是授权的

本文关键字:web asp api 授权 调用 何确保 确保 | 更新日期: 2023-09-27 18:12:43

我正在使用asp web api 2和asp身份构建一个saas应用程序。该api将被web、移动和桌面应用程序使用。我如何确保所有调用我的web api方法是授权的?在网页上,我们可以要求用户在进入某个页面之前登录,但是移动/桌面呢?用户是否需要在每次通话时提供登录名和密码?有更好的解决方案吗?我一直在搜索,没有找到任何关于这个的文章。如能寄来样品或实物,将不胜感激。

如何确保所有调用asp web api是授权的

通常当使用api作为后端时,您必须对每个请求进行用户身份验证。
(它实际上也发生在其他框架中,如mvc.net,但他们使用cookie来跟踪用户,这些cookie会随着每个请求来回发送)

我建议您使用基于令牌的身份验证(例如OAuth)。在这种情况下,您可以在请求的头部设置令牌。此令牌将用于对用户进行身份验证(并可能授权)。

如果你需要更多的信息,我可以多解释一点。

==编辑:添加代码示例==

您可以使用请求处理程序来验证请求头是否包含有效令牌:

public class AuthorizationHeaderHandler : DelegatingHandler
{
    protected override Task<HttpResponseMessage> SendAsync(
    HttpRequestMessage pRequest, CancellationToken pCancellationToken)
    {
        IEnumerable<string> apiKeyHeaderValues = null; 
        if (!pRequest.Headers.TryGetValues("Authorization", out apiKeyHeaderValues)
            || !TokenRepo.IsVallidToken(apiKeyHeaderValues))
        {
            var response = new HttpResponseMessage(HttpStatusCode.Unauthorized)
            {
                Content = new StringContent("{'"error'": '"invalid_token'"}")
            };
            response.Content.Headers.ContentType = new MediaTypeHeaderValue("application/json");
            return Task.Factory.StartNew(() => response);
        }
        return base.SendAsync(pRequest, pCancellationToken);
    }
}

您所要做的就是保持令牌与哪个用户相关联,并确保令牌有有效期。一旦通过,它也不再有效。

我希望这能澄清一点。同样,如果你有更多的问题,不要犹豫,尽管问。