我正在使用我们的IDP服务器创建一个测试项目。我们创建了一个简单的Web API示例项目,它在get方法上返回用户的声明。我们还使用OAuth Flow GrantResourceOwnerCredentials 或规范中的流程3创建了令牌。很少有事情我不太了解,需要一些帮助来获得更多的理解: -
Web API如何知道令牌来自授权 客户端以及如何验证。
在Web Api代码中,我们可以覆盖并检查OAuth传入令牌及其验证。在生产环境中,我们将为IDP和Web API提供单独的HA服务器,那么我们是否需要在Web配置中指定一些证书?
答案 0 :(得分:1)
Web API如何知道令牌来自授权客户端以及如何验证。
通常,访问令牌通过HTTP Headers传递,例如Authorization。您可以在特定路径上的web api中使用处理程序,并使用您的逻辑
检查此标记在Web Api代码中,我们可以覆盖并检查OAuth传入 令牌及其验证。在生产环境中,我们会有 单独的HA服务器用于IDP和Web API,因此我们需要指定一些 Web配置中的证书?
如上所述。最好的地方是处理程序
public class AuthenticationHandler : DelegatingHandler
{
protected override Task<HttpResponseMessage> SendAsync(HttpRequestMessage request, CancellationToken cancellationToken)
{
//...
}
}
并且不要忘记配置为某些特定路由使用您的身份验证处理程序
public static void Register(HttpConfiguration config)
{
// ...
config.MessageHandlers.Add(new AuthenticationHandler());
// ...
}
只有在您的逻辑需要此证书来验证令牌时才需要证书。最好的方法是在Windows证书存储中存储和读取它,并在web.config中配置您需要的证书指纹,因此web.config中没有用户名或纯文本密码。
我们可以为Web Api提供所有Auth机制吗?喜欢 基本的,OAuth等。
是的,您可以将基本身份验证与OAuth一起使用,只需使用某些内容进行区分,例如适合自动化的不同HTTP标头,但我不清楚,为什么您需要支持,例如与oauth一起基本,也许只使用更简单的基础更有意义。
您需要的大部分信息都会在此处收集http://www.asp.net/web-api/overview/security