Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/asp.net-mvc-3/4.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/http/4.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
Asp.net 寻找RESTful API的身份验证/模拟策略_Asp.net_Asp.net Mvc 3_Rest - Fatal编程技术网

Asp.net 寻找RESTful API的身份验证/模拟策略

Asp.net 寻找RESTful API的身份验证/模拟策略,asp.net,asp.net-mvc-3,rest,Asp.net,Asp.net Mvc 3,Rest,我需要在API中允许模拟(“充当”)。因此,具有适当权限的用户可以作为其他用户使用API。我想知道在这个领域是否有一些具体的策略 我可以创建一个端点来开始和结束模拟。开始模拟可能需要获取用户及其权限,并将其加载到内存中以用于当前请求,这非常简单。接下来的请求呢?添加一个指示“模拟用户”的HTTP头是否是一种错误的做法?如果该标头存在,是否使用它对后续请求进行身份验证?使用具有该用户标识的cookie怎么样?还是其他信息 将模拟用户分配给Thread.CurrentPrincipal是否有额外的好

我需要在API中允许模拟(“充当”)。因此,具有适当权限的用户可以作为其他用户使用API。我想知道在这个领域是否有一些具体的策略

我可以创建一个端点来开始和结束模拟。开始模拟可能需要获取用户及其权限,并将其加载到内存中以用于当前请求,这非常简单。接下来的请求呢?添加一个指示“模拟用户”的HTTP头是否是一种错误的做法?如果该标头存在,是否使用它对后续请求进行身份验证?使用具有该用户标识的cookie怎么样?还是其他信息


将模拟用户分配给Thread.CurrentPrincipal是否有额外的好处(假设是.NET impl)?当前的权限和角色实现是自定义的,基本上使用位数组(尽管这在表中,以备将来更改)。

HTTP不包括任何对代理凭据/模拟的本机支持,因此,将HTTP基本身份验证与一个自定义头相结合,以指示客户端尝试充当的是哪个其他用户就可以了

然而,我会避免“开始和结束模拟”的想法污染您的API。这意味着必须在API调用之间维护有状态会话知识,这将使服务器端的管理更加困难

我只需要让客户端在每次调用时传递所有必需的信息(它们的cred和模拟主体),并在每次调用资源时验证它们