ASP.NET 在两个不同的站点上进行 WebAPI 身份验证
ASP.NET WebAPI authentication over two separate sites
我们的情况:
- 1 IIS 网站 运行 Umbraco CMS,基于 WebAPI v1 - www.somesite.com
- 1 IIS 网站 运行 a WebAPI v2 - api.somesite.com
我们需要这两个单独的站点,因为我们的 API 逻辑已经构建在 WebAPI v2 上,我们不想编写单独的 v1 API 只是因为 Umbraco 使用与新版本不兼容的旧版本(感谢 Microsoft)。
在站点 1 上,我们想访问站点 2 上的 API 运行。站点 2 上的某些 API 方法需要使用 [Authorize] 属性进行身份验证。
同时针对站点 1 和站点 2 对用户进行身份验证的正确方法是什么?
为什么不使用可以包含在请求授权 header 中的基于声明的身份验证令牌。如果您在 HTTP 上发出请求,那么一定要考虑加密令牌。我不建议使用基本身份验证,即使您仅通过 SSL 使用它,但这也是一种选择。
在站点 2 上,您可以使用自定义授权过滤器或委托处理程序来提取和解析令牌并设置上下文的当前用户和主体。
我们的情况:
- 1 IIS 网站 运行 Umbraco CMS,基于 WebAPI v1 - www.somesite.com
- 1 IIS 网站 运行 a WebAPI v2 - api.somesite.com
我们需要这两个单独的站点,因为我们的 API 逻辑已经构建在 WebAPI v2 上,我们不想编写单独的 v1 API 只是因为 Umbraco 使用与新版本不兼容的旧版本(感谢 Microsoft)。
在站点 1 上,我们想访问站点 2 上的 API 运行。站点 2 上的某些 API 方法需要使用 [Authorize] 属性进行身份验证。 同时针对站点 1 和站点 2 对用户进行身份验证的正确方法是什么?
为什么不使用可以包含在请求授权 header 中的基于声明的身份验证令牌。如果您在 HTTP 上发出请求,那么一定要考虑加密令牌。我不建议使用基本身份验证,即使您仅通过 SSL 使用它,但这也是一种选择。
在站点 2 上,您可以使用自定义授权过滤器或委托处理程序来提取和解析令牌并设置上下文的当前用户和主体。