【问题标题】:WebAPI - Seperate deployment for token endpoint and API endpointWebAPI - 令牌端点和 API 端点的单独部署
【发布时间】:2019-09-03 10:40:44
【问题描述】:

我有两个 webapi 项目,它们将部署为同一服务器上的两个不同网站 - server/site1 和 server/site2。他们都使用令牌认证。我能否拥有第三个 webapi 项目,其中仅包含部署在 server/tokensite 的令牌端点,以便从此处检索到的令牌可用于在 site1 和 site2 上进行身份验证?

【问题讨论】:

    标签: authentication asp.net-web-api2 token bearer-token


    【解决方案1】:

    你的问题

    我有两个 webapi 项目,它们将部署为同一服务器上的两个不同网站 - server/site1 和 server/site2。它们都使用令牌身份验证。我可以有第三个 webapi 项目,其中只有部署在 server/tokensite 的令牌端点

    我希望部署在同一台服务器上,但使用子域:

    • site1.example.com
    • site2.example.com
    • auth.example.com

    这使您可以更轻松地在服务器上移动东西。

    以便从此处检索到的令牌可用于在站点 1 和站点 2 上进行身份验证?

    是的,你可以,但正如我已经提到的,我不会在同一个域中这样做。

    看来您要实现的是Single Sign On(SSO)

    单点登录 (SSO) 是多个相关但独立的软件系统的访问控制属性。 相反,单次注销是单次注销操作终止对多个软件系统的访问的属性。 其他共享身份验证方案(例如 OpenID 和 OpenID Connect)提供其他服务,这些服务可能需要用户在登录资源期间做出选择,但如果这些其他服务(例如用户同意)被配置为单点登录已禁用。

    所以要实现 SSO 你可以使用OpenID Connect:

    OpenID Connect 1.0 是 OAuth 2.0 协议之上的简单身份层。它允许客户端根据授权服务器执行的身份验证验证最终用户的身份,并以可互操作和类似 REST 的方式获取有关最终​​用户的基本配置文件信息。 OpenID Connect 执行许多与 OpenID 2.0 相同的任务,但以 API 友好的方式执行,并且可用于本机和移动应用程序。 OpenID Connect 定义了健壮签名和加密的可选机制。虽然 OAuth 1.0a 和 OpenID 2.0 的集成需要扩展,但在 OpenID Connect 中,OAuth 2.0 功能与协议本身集成。

    可能的解决方案

    我不建议您实现自己的解决方案,而是将其委托给身份验证提供者,或者使用开源包来实现它。

    您似乎正在使用 DOTNET,因此我建议您阅读他们的文档中的 this quick start,该文档将指导您在带有一些官方库的新项目中设置 SSO。

    在本快速入门中,您将了解如何使用 ASP.NET MVC 解决方案和使用 OpenID Connect 的基于 Web 浏览器的传统应用程序实现 Microsoft 登录。您将了解如何在您的 ASP.NET 应用程序中启用工作和学校帐户的登录。

    您也可以使用来自Azure Active Directory 的 SSO。

    单点登录 (SSO) 在用户登录到 Azure Active Directory (Azure AD) 中的应用程序时增加了安全性和便利性。本文介绍了单点登录方法,并帮助您在配置应用程序时选择最合适的 SSO 方法。

    对于阅读本文但使用其他语言的任何人,请参阅 SSO 包的一些示例:

    加倍努力

    一旦您部署了自己的解决方案,我建议您投入大量资金来保护它。对于服务于 Web 应用程序的 API,您可以使用多层防御,从 reCaptcha V3 开始,然后是 Web Application Firewall(WAF),最后如果您负担得起,则可以使用 User Behavior Analytics(UBA) 解决方案。如果您想了解和理解为什么正确保护 API 很重要,您可能需要阅读 this series 的文章,这些文章将教您如何使用 API 密钥、用户访问令牌、HMAC 和 TLS 固定来保护 API以及如何绕过它们。虽然这一系列文章是在移动 api 的背景下,但其中很多仍然适用于 web api。

    谷歌reCAPTCHA V3:

    reCAPTCHA 是一项免费服务,可保护您的网站免受垃圾邮件和滥用。 reCAPTCHA 使用高级风险分析引擎和自适应挑战来防止自动化软件参与您网站上的滥用活动。它在让您的有效用户轻松通过的同时做到这一点。

    ...帮助您检测网站上的滥用流量,而不会产生任何用户摩擦。它会根据与您的网站的互动返回一个分数,并让您更灵活地采取适当的行动。

    WAF - Web Application Firewall:

    Web 应用程序防火墙(或 WAF)过滤、监控和阻止进出 Web 应用程序的 HTTP 流量。 WAF 与常规防火墙的区别在于,WAF 能够过滤特定 Web 应用程序的内容,而常规防火墙充当服务器之间的安全门。通过检查 HTTP 流量,它可以防止源自 Web 应用程序安全漏洞的攻击,例如 SQL 注入、跨站点脚本 (XSS)、文件包含和安全错误配置。

    UBA - User Behavior Analytics:

    Gartner 定义的用户行为分析 (UBA) 是一个关于检测内部威胁、针对性攻击和金融欺诈的网络安全流程。 UBA 解决方案着眼于人类行为模式,然后应用算法和统计分析从这些模式中检测出有意义的异常——表明潜在威胁的异常。 UBA 不是跟踪设备或安全事件,而是跟踪系统的用户。 Apache Hadoop 等大数据平台通过分析 PB 级数据以检测内部威胁和高级持续性威胁,正在增加 UBA 功能。

    【讨论】:

    • 非常感谢 Exadra 的详细回复。我并不完全在寻找 SSO。我只需要一个令牌提供程序以及在调用不同站点上的不同 API 时对令牌进行身份验证的能力。我认为您提供的信息是一个很好的起点。我将开始挖掘材料。再次感谢您不厌其烦地解释这一点。
    猜你喜欢
    • 2015-09-20
    • 1970-01-01
    • 2014-06-30
    • 2015-09-17
    • 2019-04-30
    • 1970-01-01
    • 2018-04-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多