ASP.NET Web API-分离客户端,身份验证和资源服务器

时间:2019-01-28 16:30:13

标签: asp.net-web-api oauth-2.0

我试图将利用OAuth 2进行授权的简单示例应用程序组合在一起。我想创建3个单独的项目:

  1. 客户端应用程序,它调用身份验证服务以进行身份​​验证并检索承载令牌。
  2. 接受凭据并颁发令牌的身份验证服务。
  3. 一种Web API服务,可为客户端检索数据,但前提是请求数据的客户端将令牌附加到请求中。

基本流程为:用户与客户端应用程序进行交互,然后输入其凭据。这被发送到auth服务,该服务对身份进行验证并颁发令牌。客户端将令牌附加到对Web API服务的请求中以检索一些数据。

我找到了this walkthrough和样本数据,其中包含所有这些数据,并且有效。

它的问题以及docs.microsoft.com中几乎所有的演练都在于,它将所有片段都塞进一个VS项目中。这不仅在生产应用程序中是不现实的,而且还使得很难弄清楚在这三个应用程序中哪些是必不可少的。

所以我着手将这段代码分成3个不同的VS项目。首先,我分离出客户端代码(主要是JavaScript和Knockout)。得到了运行。

现在,我需要将其余代码分为我的auth服务和我的Web API数据检索服务。那就是一切似乎出错的地方。创建Web API服务时,我可以使所有内容运行。但是,一旦在其上放置[Authorize]属性,就会得到401s。首先进行身份验证似乎可以正常工作,但是一旦我调用Web API,就会再次进行401。

因此,我将此代码添加到Web API项目中,以为它可以连接我需要的内容:

config.SuppressDefaultHostAuthentication();
config.Filters.Add(new HostAuthenticationFilter(OAuthDefaults.AuthenticationType));

但这会导致新的错误。

我缺少明显的东西吗?还有另一个可靠的演练演示如何将这些单独的功能分离到单独的项目中吗?

0 个答案:

没有答案