使用ASP.NET Identity和ASP.NET Web API 2进行基于跨域令牌的身份验证

时间:2014-10-02 14:47:11

标签: authentication cross-domain cors asp.net-identity asp.net-web-api2

我想了解处理此身份验证方案的最佳做法。我有一个名为(https://public.domain.com/#registration)的注册页面,注册完成后,我想对用户进行身份验证并将其重定向到应用程序(即https://app.domain.com/)。我有另一台服务器,我有认证方法,api控制器等(即https://api.domain.com/Tokenhttps://api.domain.com/api/getOrders等)。

从注册页面(https://public.domain.com/#registration)我打电话(https://api.domain.com/Token)进行身份验证,然后将其存储在sessionStorage [" accessToken"]或localStorage [& #34;的accessToken&#34]。无论我在哪里存储此令牌,它都不会在我将用户重定向到(https://app.domain.com/)的其他域中可用。

我的问题是:我是否必须通过https://public.domain.com/#registration中的查询字符串将令牌传递给https://app.domain.com/Login?Token=xxxxxxxxxxx,以便我可以将其用于存储在localStorage或sessionStorage中,并在https://app.domain.com/中进行身份验证?

如何在多个域中提供该令牌?这样做的最佳做法是什么?有什么大的安全风险? 我已经使用CORS设置了我的Api框,因此可以在注册和应用服务器中访问Token端点。

另外,我想指出https://public.domain.com/#registrationhttps://app.domain.com/是单页应用程序,使用Durandal,BreezeJS,Knockout等(热毛巾模板)。

1 个答案:

答案 0 :(得分:1)

这几乎回答了我的问题: Single Sign On (SSO) for cross-domain ASP.NET applications

亮点:

  

那么,如何跨多个域共享身份验证cookie?   好吧,绝对没有办法做到这一点。根本障碍   HTTP协议阻止您共享cookie   不同的域名,主要是出于安全原因。

     

...... ASP.NET中没有内置机制来实现Single   在这两个不同的网站上签名。