使用 Web API 的无浏览器身份验证

Posted

技术标签:

【中文标题】使用 Web API 的无浏览器身份验证【英文标题】:Browserless Authentication using the Web API 【发布时间】:2018-08-14 08:35:36 【问题描述】:

我正在尝试使用 web api 对桌面应用程序中的用户进行身份验证。我没有使用浏览器,而是直接使用 GET 和 PUSH 调用到 Spotify 服务器的端点。我立刻遇到了一些问题。似乎在对“accounts.spotify.com”执行初始 GET 命令时,返回的响应包括带有 javascript 函数的 html,该函数运行并负责动态生成您在初始登录页面上看到的 HTML。如果您查看 Javascript 函数,很明显这就是正在发生的事情,但是,您也可以看到这段代码被混淆了,不打算供我们开发人员使用! (此处链接到 Javascript 代码以供参考:Javascript function)

所以我的问题是,虽然我可能可以对代码进行逆向工程以使其正常工作,但这是否违反了 Spotify 开发人员的 TOS?

谢谢!

【问题讨论】:

【参考方案1】:

Spotify 的身份验证通过 oauth 进行,根据 oauth rfc 的用户身份验证的很大一部分是用户将权限委派给您的应用程序以执行影响其帐户的 API 调用,或返回有关它们的信息。这就是您看到的网页 - 它必须呈现给您的用户,以便他们可以委派权限,以便 Spotify 可以为您的应用提供访问令牌。它不一定需要在浏览器中发生 - 它可以在桌面应用程序内的 Web 视图中发生 - 但它确实需要通过 https 加载,并且您的应用程序不得更改或反向工程 Spotify 权限委托页面。

正如您猜对的那样,对任何 Spotify API 进行逆向工程都是违反服务条款的。

有关 Spotify 平台授权的更多信息,我建议您查看this guide。

希望对您有所帮助!如果您还有任何问题,请联系我。

Spotify 开发者支持

【讨论】:

以上是关于使用 Web API 的无浏览器身份验证的主要内容,如果未能解决你的问题,请参考以下文章

Web API 中基于令牌的身份验证,无需任何用户界面

401 未经授权的错误 web api mvc windows 身份验证

如何将 Windows 身份验证凭据从客户端传递到 Web API 服务

如何使用 Web API 来对 MVC 应用程序进行身份验证

如何使用 Web API 来对 MVC 应用程序进行身份验证

在web api身份验证之后将令牌存储在浏览器本地存储中是否安全