2015-12-02 64 views
1

我想在mvc-web-api4中第一次打开认证。我在services.domain.com中托管了我的服务,前端(UI)位于test.domain.com中。开放认证跨域重定向问题

在前端我会打电话从Facebook登录服务。成功登录后,我将在services.domain.com中获取访问令牌。但我的代码在test.domain.com。

从Facebook重定向后。我正在访问service.bubblesbuy.com中的访问令牌,但我需要test.domain.com中的访问令牌。

这里有我跟着

$.ajax({ 
    url: "services.domain.com/api/Account/ExternalLogins?returnUrl=%2F&generateState=true", 
    success: function (data) { 
    //after successful 
    } 
成功后

的步骤,我会得到供应商,这里是输出

[  
{ 
"Name": "Facebook", 
"Url": "/api/Account/ExternalLogin?provider=Facebook&response_type=token&client_id=self&redirect_uri=services.domain.com&state=bzDUygFiUw-jOYHCYaDPT8iawAjq1ejd0hmkVPZTwjk1", 
"State": "bzDUygFiUw-jOYHCYaDPT8iawAjq1ejd0hmkVPZTwjk1" 
} 
] 

我将通过URL来我的服务

services.domain.com//api/Account/ExternalLogin?provider=Facebook&response_type=token&client_id=self&redirect_uri=services.domain.com&state=bzDUygFiUw-jOYHCYaDPT8iawAjq1ejd0hmkVPZTwjk1", 
"State": "bzDUygFiUw-jOYHCYaDPT8iawAjq1ejd0hmkVPZTwjk1 

我正在获取访问令牌

services.domain.com/#access_token= Hu2B5WmmZLy8TfJ3RqRsVnQDfDcHSiVCMliWrS554PpU-i_LQzdMggJgXClsf-ZtYXRDxxct7m3frZxYR0MKLxNWHwH1gXxi7Y-HUbWjyB9QvBJMwifFCVMnt7BOOlKjJPEAhdOY7ZgRB-vURBH-hHT6wFSXJvvpYpZ0fziX0DgKrLIqUj8&token_type=bearer&expires_in=1209600&state=24HUa-Upzo-_Xh2j0CkAx5TVPdoirvNrGktpg5H5Ifg1 

,但我需要访问令牌test.domain.com(前端哪里我所有的HTML页面有)

请帮助我如何获得test.domain.com的访问令牌(在前端)

回答

1

您需要授权服务器向您的客户端(前端)发出访问令牌。 Microsoft为ASP.NET MVC提供了OWIN中间件。看看这个示例:OWIN OAuth 2.0 Authorization Server

由于Microsoft将来不再支持此中间件,因此您也可以使用开源IdentityServer3。这个项目是.NET Foundation的一部分,提供了很好的支持和大量的示例。