我发布这个是希望收到一些反馈/建议和关于我过去几天一直在努力的事情的信息。首先,我将简要介绍一下该项目。
解决方案中有 2 个应用程序:
WebAPI 资源和授权服务器- 使用 OWIN(托管在 IIS 中)和 ASP.NET 身份在正确登录时发出身份验证令牌,然后允许对各种控制器的请求。
MVC 客户端应用程序- 目前还没有授权(直到我弄清楚),但会调用 WebAPI 资源服务器以获取所有数据。这些调用只会通过客户端应用程序中控制器的操作进行,没有客户端 AJAX 调用。
客户端应用程序没有自己的数据源。所有信息都存储在 WebAPI 服务可以访问的数据库中,因此本质上,如果它们提供正确的凭据并且客户端应用程序接收到不记名令牌,我需要为应用程序提供一种将它们视为授权的方式。
- 处理这个问题的最佳方法是什么?
- 是否可以在客户端配置 OWIN 以使用服务器的 OAuth 设置?我是不是找错了树,我只需要使用 HTTPClients 吗?
- 我可以反序列化承载令牌并将其存储在会话中,然后编写我自己的授权提供程序以在客户端检查这些吗?
我最初担心的是我在滥用不记名令牌并试图将它们拼凑成一个不理想的解决方案。到目前为止,我发现的所有外部授权示例通常都涉及调用由 Google/Facebook/Twitter 托管的提供商来检查用户是他们所说的身份,然后继续在他们的系统中创建用户记录。我的应用程序无法做到这一点。
关于安全性,我计划引入过滤器,通过提供标识符和秘密以及 IP 验证来验证请求是否来自客户端应用程序。
我意识到这可能有点开放,但我会很感激任何建议。该项目的范围是 Web 服务是唯一可以访问数据库的东西。MVC 客户端应用程序将托管在不同的服务器上,并且该服务将只接受来自所述客户端应用程序的请求。