Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.net 如何将OAuth2身份验证令牌从MVC5 wepapplication传递到WebAPI2应用程序_.net_Oauth 2.0_Asp.net Mvc 5_Asp.net Web Api2_Cross Domain - Fatal编程技术网

.net 如何将OAuth2身份验证令牌从MVC5 wepapplication传递到WebAPI2应用程序

.net 如何将OAuth2身份验证令牌从MVC5 wepapplication传递到WebAPI2应用程序,.net,oauth-2.0,asp.net-mvc-5,asp.net-web-api2,cross-domain,.net,Oauth 2.0,Asp.net Mvc 5,Asp.net Web Api2,Cross Domain,我在使用OAuth2、WebAPI2和接口设置项目时遇到了一些问题 场景: 我正在建立一个基本上是WebApi2的项目。此WebApi为我的接口提供反业务逻辑和数据 目前,该界面是一个MVC5网络应用程序,但在未来,我希望能够将其他一些“应用程序”连接到它。这就是COR的用武之地:接口和WebAPI可以位于不同的服务器上 我想使用OAuth2,这样用户可以通过谷歌和其他提供商注册 问题: 它涉及注册部分: 首先,我尝试注册接口MVC应用程序,并尝试将身份验证令牌传递给WebAPI。这似乎不是实现

我在使用OAuth2、WebAPI2和接口设置项目时遇到了一些问题

场景:

我正在建立一个基本上是WebApi2的项目。此WebApi为我的接口提供反业务逻辑和数据

目前,该界面是一个MVC5网络应用程序,但在未来,我希望能够将其他一些“应用程序”连接到它。这就是COR的用武之地:接口和WebAPI可以位于不同的服务器上

我想使用OAuth2,这样用户可以通过谷歌和其他提供商注册

问题:

它涉及注册部分:

首先,我尝试注册接口MVC应用程序,并尝试将身份验证令牌传递给WebAPI。这似乎不是实现这一点的正确方法

现在我正在考虑在WebApi项目中公开一个注册接口,这样,如果用户在MVC webapplication上注册,就会被重定向到Api。但这会让人担心,因为对于MVC Web应用程序上的每个操作,都需要一个“Isthis user authenticated”调用

有人知道这两个选项中哪一个(或者第三个)更可取吗


我知道这很宽泛,但请温柔一点;-)

这是建筑部分的一个相当大的问题

第二种方法似乎很复杂,因为您有两个UI界面,考虑了所有的应用程序(MVC5应用程序和现在注册的WebAPI)

因此,通过这样做,您将使您的接口更加依赖于API项目,从而使其紧密耦合

在第一种方法中,如果只有安全性是您的障碍,那么您可以在web API项目的服务调用之前和之后加密/解密令牌

使用第一种方法,您可以在本地存储或会话中的ur接口/表示层上持久化用户身份验证

WebApi本身用于应用程序和系统的其他组件(如业务层)之间的分布式通信

但是您已经有了接口层,所以我认为没有必要让WebApi过于依赖用户界面


第一种方法很好。

我们的项目具有相同的体系结构

MVC站点->Web API(业务)->Web API(数据)

业务API将向第三方开发人员开放,因此我们需要OAuth2身份验证

Web API只能打开一些函数,不是全部,也许你会使用“范围”,但对我们来说,只有两种API,第三方API和我们网站的API

所以我们在authenticate handler中做了一些事情,授权头有一个“承载”方案,为什么我们的站点没有一个新的方案呢

然后它就起作用了。只需为MVC站点定义一个新方案,例如“ASPX”,并存储来自站点的表单cookie,然后解决它

我们还可以知道请求来自何处,因为报头方案不同


顺便说一句,您应该注意scheme的名称。

关于如何实现外部身份验证。在解密cookie之前,请确保API服务器和MVC站点服务器具有相同的machinekey设置