Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jsf-2/2.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
Security 使用同源策略和OAuth的REST API身份验证_Security_Authentication_Oauth_Asp.net Web Api - Fatal编程技术网

Security 使用同源策略和OAuth的REST API身份验证

Security 使用同源策略和OAuth的REST API身份验证,security,authentication,oauth,asp.net-web-api,Security,Authentication,Oauth,Asp.net Web Api,我正在编写一个API,供我的JavaScript应用程序(同一个域,API位于API.example.com和example.com的站点)和第三方开发人员(移动、桌面等)使用。现在我想使用OAuth,但我不知道在使用OAuth和使用相同来源策略的应用程序时工作流是什么 如何在我的web应用中验证用户身份?当我发送用户名和密码时,我是否可以检查请求是否来自我的域,然后返回令牌?令牌将存储在cookie中,并在每次请求时发送回服务器。因此有两个部分: 如果请求来自我的域,只需检查令牌,否则会引发H

我正在编写一个API,供我的JavaScript应用程序(同一个域,API位于
API.example.com
example.com
的站点)和第三方开发人员(移动、桌面等)使用。现在我想使用OAuth,但我不知道在使用OAuth和使用相同来源策略的应用程序时工作流是什么

如何在我的web应用中验证用户身份?当我发送用户名和密码时,我是否可以检查请求是否来自我的域,然后返回令牌?令牌将存储在cookie中,并在每次请求时发送回服务器。因此有两个部分:

  • 如果请求来自我的域,只需检查令牌,否则会引发HTTP异常
  • 如果不是我的域,请执行OAuth身份验证

  • 这可能吗?我如何在asp.net web API中设置它?(主要是关于检查请求是否在同一域中的部分)

    我猜登录到您的web应用程序时,您没有使用OAuth,只需接受用户名和密码并启动会话?如果是这样,您就不必为自己的站点使用OAuth了

    将会话cookie设置为跨
    *.example.com
    有效,您应该能够在
    site.example.com
    api.example.com
    上验证该cookie

    例如:

  • 请求进入
    api.example.com/verify\u credentials.json
  • 如果OAuth验证成功,则提供响应
  • 如果没有,则尝试Cookie验证-如果成功,则提供服务
  • 如果两者都失败,则返回
    402
  • 下面是一个关于跨子域共享cookie的线程: