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

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

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

有人能想出更好的解决方案吗?

有帮助吗?

解决方案

IMO 对于您正在做的事情的最佳解决方案是将 OAuth 与 OpenID 结合使用。您在 RP 上使用 OpenID 没问题。但对于需要访问该网站的已安装应用程序,它们应该使用 OAuth 来获得授权。该流程将如下所示:

  1. 用户在其设备上安装应用程序
  2. 在安装期间或首次启动时,该应用程序有一个“授权我”按钮。
  3. 用户按下按钮,网络浏览器会弹出客户端应用程序需要从中访问数据的网站。
  4. 用户使用其 OpenID 登录该网站
  5. 网站现在询问“您想授权客户端应用程序 X 吗?”
  6. 用户同意并关闭浏览器。
  7. 客户应用重新出现并表示“谢谢”。现在,拥有访问用户数据所需的OAuth令牌,而无需用户再次登录。
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top