redirect - 非 Web 应用程序的 OAuth 重定向 URI 替代方案?

标签 redirect oauth oauth-2.0 response google-oauth

为 OAuth 身份验证处理重定向 URI 的最佳方式是什么?

在一些项目中,我曾经启动一个等待身份验证被发回的网络服务器。有什么方法可以在没有本地 Web 服务器的情况下触发任何类型的代码,还是推荐的方法?

我不是在寻求有关任何特定语言的帮助,这更像是一个与语言无关的问题。

最佳答案

旁注:漂亮的头像...:)

确定最佳方法将取决于确切的场景和您的应用程序可能有的任何其他要求,但是,我们可以查看一些选项以及选择它们的可能含义。

OAuth 2.0 specification建议使用嵌入式用户代理或依赖外部用户代理来解决此问题。

嵌入式用户代理可以让您更好地控制 UI 方面,但是,通过利用外部用户代理,您的用户可能会从已经建立的 session 中受益,而不必再次输入凭据。

对于外部用户代理,我们有几种选择:

External user-agent - the native application can capture the response from the authorization server using a (1) redirection URI with a scheme registered with the operating system to invoke the client as the handler, (2) manual copy-and-paste of the credentials, (3) running a local web server, (4) installing a user-agent extension, or by (5) providing a redirection URI identifying a server-hosted resource under the client's control, which in turn makes the response available to the native application.

选项 1:

您可以使用您的应用程序在操作系统中注册的自定义方案来配置重定向,这样当外部用户代理收到指示重定向到您的方案的响应时,您的应用程序就会被调用。

选项 2:

你重定向到某个地方,它只显示一个带有代码的漂亮页面,并要求用户在你的应用程序中手动输入它。

选项 3:

您已经使用过这个,基本上应用程序会启动一个本地 Web 服务器,并且您将重定向配置为类似于 http://localhost:[port]/ 的内容。

选项 4:

通过安装用户代理扩展,您可以让代码与浏览器一起运行,浏览器可以自动将代码传递给您的应用程序。

选项 5:

您配置一个重定向 URI,该 URI 指向您托管的某些服务器端代码,并且您的客户端 Android 应用程序知道该代码,以便它可以从该 URL 获取代码。


有关此主题的更多信息,请查看:OAuth 2.0 for Native Apps

此外,如果您不想在需要服务器上的某些逻辑的选项上使用完整的服务器端,您可以通过将服务器端逻辑编写为使用更少的代码行来完成相同的操作一个Webtask (一定要使用自定义域)。

披露:我是一名 Auth0 工程师。

关于redirect - 非 Web 应用程序的 OAuth 重定向 URI 替代方案?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40367795/

相关文章:

java - 在 Struts2 中如何在没有参数出现在 URL 中的情况下进行永久重定向(状态代码 301)

http - http.StatusFound 是否是点击重定向的正确状态?

node.js - 从服务器自动发布/共享到 linkedin 公司页面

c# - 如何让用户的电子邮件从 Facebook OAuth 登录返回到我的 asp.net web 表单应用程序?

javascript - 社交身份验证提供商未返回用户电子邮件

ios - 从 iOS + Bonjour 使用 Google Oauth2 webflow(赞!)

node.js - Express - 无法发送重定向,对预检请求的响应未通过访问控制检查

javascript - 避免 iOS9 中 url 方案重定向的确认对话框

VB.NET - Salesforce POST 请求返回 400 错误请求错误

Azure AD OAuth2 无权访问用户信息