3

我目前正在计划一个新的网络项目。客户端将使用常规的 Web 浏览器进行连接,如果是常规的支持 Java 的手机,则使用 j2me 客户端。我真的很想使用 OpenID 身份验证。如果是普通的网络浏览器,事情就很简单了。但是,我真的不确定已安装的应用程序(例如安装在移动设备上的 j2me 客户端) - 通过在特定 OpenID 提供商的网页上输入用户名/密码来执行常规 OpenID 身份验证 - 这是一个很大的限制:)

有没有人处理过这种情况?是否可以为使用来自移动 j2me 客户端的 OpenID 的站点创建身份验证机制?

目前,我想到的解决方案是希望通过手机连接的用户在进行身份验证后从服务器网站下载必要的 j2me 应用程序(常规浏览器身份验证)。移动客户端应用程序可以在服务器上动态组装,其中嵌入了与特定登录 OpenID 用户相关联的 SSL 证书。之后,j2me 客户端可以在不输入任何用户名/密码的情况下向服务器进行身份验证。将存储在服务器上的数据不是那么敏感 - 考虑到手机盗窃等情况。

有人可以提出更好的解决方案吗?

4

1 回答 1

3

对于您正在做的事情,IMO 的最佳解决方案是将 OAuth 与 OpenID 结合使用。您在 RP 使用 OpenID 很好。但是对于需要访问该网站的已安装应用程序,他们应该使用 OAuth 来获得授权。流程将像这样工作:

  1. 用户在他们的设备上安装应用程序
  2. 在安装期间或首次启动时,该应用程序有一个“授权我”按钮。
  3. 用户按下按钮,网络浏览器会弹出客户端应用程序需要从中访问数据的网站。
  4. 用户使用其 OpenID 登录该站点
  5. 网站现在询问“您要授权客户端应用程序 X 吗?”
  6. 用户说是并关闭浏览器。
  7. 客户端应用程序重新出现并说“谢谢”。现在拥有访问用户数据所需的 OAuth 令牌,而无需用户再次登录。
于 2009-05-08T18:28:47.633 回答