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

问题描述 投票:0回答:0

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

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

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

我发现了本演练和样本数据,其中包含所有这些内容,并且可以正常工作。

与此相关的问题以及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));

但这会导致新的错误。

我是否缺少明显的东西? 是否有另一个完整的演练演示如何将这些单独的功能分离到单独的项目中?

asp.net-web-api oauth-2.0
© www.soinside.com 2019 - 2024. All rights reserved.