【问题标题】:Using another site to secure my site使用另一个站点来保护我的站点
【发布时间】:2016-05-16 14:32:30
【问题描述】:

我想编写一个网站,在现有网站提供的功能之外添加额外的功能。

但我宁愿不为我的网站设置自己的安全性。

我想我会写一些我想要安全的 web api 服务。

这是现有网站对其登录页面的描述:

这是您将用于验证用户身份的 URL。如果身份验证成功,您应该会收到 200 响应代码,并且在响应正文中不应找到短语“登录”。对此请求使用 HTTP POST。

我知道我可以为每个服务调用调用登录页面,但我希望用户只需登录一次。

有什么方法可以让我知道他们最近登录,但仍然可以防止有人试图欺骗他们已经登录?

【问题讨论】:

  • 恐怕真的很难理解您的要求。您是否拥有现有网站和/或可以修改它?使用这个现有站点(cookies、承载令牌等)的身份验证机制是什么?按原样查看您的问题,我相信您没有选择重用现有身份验证的选项。
  • @FedericoDipuma - 我不拥有现有网站。我希望使用类似于 Open Id 提供者的身份验证(尽管他们没有实现 Open Id)。我希望有类似的东西,“使用 API something,它会生成一个安全令牌,您可以将其放入 cookie 并知道它是合法的”或类似的东西。我只是不太了解网络安全,所以我在这里问。
  • 听起来您正在尝试实现 OAuth。
  • 如果这个现有站点不提供用于身份验证/授权的标准 API(OpenId、OAuth 等),那么您就没有机会将其用作身份验证提供程序。我可以假设它只是使用某种 cookie 来保持身份验证状态。这对您来说就像一个黑匣子,您无法确定用户是否经过身份验证。
  • @FedericoDipuma - 所以,想想这个,如果我将用户发送到登录页面,并返回一个 200 代码,那么我会生成一个相当长的令牌,该令牌存储在客户端和服务器,然后我使用 HTTPS 将该令牌添加到每个调用中(并最终使令牌超时)......这不起作用吗? (如果令牌不匹配,则它们未通过身份验证,我会重定向到登录页面。)

标签: .net security asp.net-web-api asp.net-web-api2


【解决方案1】:

目前有 2 个选项可以通过单点登录来实现。

  1. 通过 Ws-Federation 使用联合身份验证。
  2. 使用 oAUTH 2.0/Open-Id 连接,使用 IdentityServer 之类的东西。

【讨论】:

  • 如果我将用户发送到登录页面,并返回一个 200 代码,然后我生成一个相当长的令牌存储在客户端和服务器上,然后我将该令牌添加到每个调用使用 HTTPS(并最终使令牌超时)......这行不通吗? (如果令牌不匹配,那么它们没有经过身份验证,我会重定向到登录页面。)
  • 我认为我也需要他们的网站支持这一点...可以在我这边完成吗?
  • 请查看一些基于 Owin 的安全性示例。如果外部站点支持 Open Id 规范,您可以使用 Google/Facebook 等外部登录提供程序,或者您也可以配置和使用您自己公司的身份提供程序或配置身份服务器实例来执行此操作。以下链接显示了 Owin Security 与外部提供商的示例:asp.net/aspnet/overview/owin-and-katana/…
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-09-03
  • 2010-09-13
  • 1970-01-01
  • 2021-10-30
  • 1970-01-01
  • 1970-01-01
  • 2016-02-12
相关资源
最近更新 更多