我在使用OAuth2,WebAPI2和界面设置项目时遇到了一些麻烦。
情景:
我正在建立一个基本上是WebApi2的项目。此WebApi为我的接口提供业务逻辑和数据。
目前,界面是一个MVC5 web应用程序,但将来我希望能够将其他一些“应用程序”连接到它。这就是CORS的用武之地:接口和WebAPI可以位于不同的服务器上。
我想使用OAuth2,因此用户可以通过Google和其他提供商进行注册。
问题:
它涉及注册部分:
首先,我尝试注册接口MVC应用程序并尝试将身份验证令牌传递给WebAPI。这似乎不是实现这一目标的正确方法。
现在我想在WebApi项目中公开一个注册界面,这样如果他们在MVC web应用程序中注册,用户将被重定向到Api。但是这会让人担心,因为对于MVC web应用程序的每个操作,都需要“这个用户通过身份验证”的调用。
有谁知道这两个选项中的哪一个(或者可能是第三个)更合适?
我知道这很广泛,但请保持温和; - )
答案 0 :(得分:2)
这是建筑部分的一个相当大的问题。
要温柔。第二种方法似乎很复杂,因为你有两个UI接口考虑所有应用程序(MVC5应用程序和现在用于注册的WebAPI)
因此,您将使您的界面更依赖于API项目,使其紧密耦合。
在第一种方法中,如果只有安全性是您的障碍,那么您可以在服务调用Web API项目之前和之后加密/解密令牌。
使用第一种方法,您可以在本地存储或会话中的接口/表示层上保留用户身份验证
WebApi本身适用于应用程序与系统的其他组件(如业务层)之间的分布式通信。
但是你已经有了接口层,所以我认为没有必要通过用户界面使WebApi变得沉重。
第一种方法会很好。
答案 1 :(得分:1)
我们的项目具有相同的架构。
MVC网站 - > Web API(业务) - > Web API(数据)
Business API将向第三方开发人员开放,因此我们需要OAuth2身份验证。
Web API只能打开一些功能,而不是全部,也许您会使用“范围”,但对我们来说,只有两种API,第三方API和我们网站的API。
所以我们在authenticate处理程序中做了一些事情,有一个授权标题的“Bearer”方案,为什么不为我们的网站新建一个?
然后它有效。只需为MVC站点定义一个新方案,例如。 “ASPX”,并从网站存储表单cookie,解决它。
我们还可以知道自标头方案以来请求的位置不同。
顺便说一句,你应该注意计划的名称。