首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >跨域认证ASP.net MVC

跨域认证ASP.net MVC
EN

Stack Overflow用户
提问于 2015-07-30 10:17:25
回答 6查看 6.4K关注 0票数 11

我有两个不同的web应用程序构建使用ASP.net MVC。这两个应用程序可能不在同一台服务器上运行,也可能不在同一域中运行。

我想,如果一个用户登录其中一个,应该自动登录在另一个。同样的情况也适用于注销。

你认为哪一个是最好的解决办法?你知道一些示例代码吗?

谢谢!

-编辑有更多信息--

用例场景:

用户在选项卡上打开了web应用程序A,在应用程序的某个点有一个链接将用户重定向到web应用程序B。如果他登录了A,我想向他展示完整的页面,如果没有,请将他重定向到登录表单。

为什么我要这么做:

应用程序AB已经构建完毕。显然,访问B的唯一方法是单击位于A中的链接,只有在您以前登录过的情况下才会显示该链接。问题是,如果您知道B的某个页面的URL (长而复杂,但仍然如此),您可以在浏览器上编写它并访问B,这意味着存在安全问题。

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2015-08-10 19:30:48

我假设您不能使用任何共享存储在应用程序A和B之间进行通信。(这可能允许一些共享的会话实现)。

这样做的行业标准方式(OpenID连接)就像其他一些答案所暗示的那样。我会尽量给出更多的细节,让你走上正确的轨道。

应用程序A和B都应该将身份验证过程转发给可信的第三方(可以托管在A、B或完全不同的应用程序中)--让我们称之为C

当用户到达A或B(不管B有奇怪的复杂URL,她总是可以书签这些URL),他的请求应该包含一个授权令牌。如果没有,她没有经过身份验证,将被重定向到C,并给出了一些登录机制--比如用户/通行证表单。

成功登录后,她将被重定向回A/B (取决于她来自何处),以完成她对身份验证令牌所做的一切。现在,有了身份验证令牌,她就被认证了。

如果她使用A进行身份验证,然后重定向到B,则此重定向也应该包含令牌,B将知道如何信任该令牌。

现在,如果他打开一个新的选项卡,B将不会看到任何标记,因此她将被重定向到C,结果被重定向回(她已经通过身份验证了,还记得吗?)现在一切都好了。

我描述的是一个使用OpenID连接的常见流程,如果使用.net,我真的建议使用Thinktecture的IdentityServer来为您做艰苦的工作,成为您的"C“。

另一种选择是支付作为SaaS应用程序托管的"C“的费用--签出Auth0

票数 7
EN

Stack Overflow用户

发布于 2015-08-04 11:17:17

我的答案可能不是最好的,但你可以使用一些棘手的机制,如

  1. 无论何时进行另一个应用程序,都需要将一个令牌从应用程序A传递到应用程序B。
  2. 在B站点上验证此令牌。
  3. 并基于令牌授权该用户。(我的意思是申请无声或后门登录)
票数 8
EN

Stack Overflow用户

发布于 2015-08-06 07:15:14

您可以在项目中实现OAuth。您可以在这里获得更多帮助:http://www.openauthentication.org/about

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31721079

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档