首页 文章

什么是OpenID Connect授权流程来验证移动应用用户?

提问于
浏览
18

我正在构建一个与RESTful API交互的跨平台移动应用程序,我想使用OpenID Connect对我的用户进行身份验证 . 我将构建自己的OpenID Connect提供程序服务器 .

OpenID.net claims

OpenID Connect允许所有类型的客户端(包括基于浏览器的JavaScript和本机移动应用程序)启动登录流程并接收有关已登录用户身份的可验证断言 .

但是,我找不到任何解释如何为移动应用客户端进行身份验证的文档 .

This StackExchange answer清楚地表明OpenID Connect不支持"resource owner password-based grant"流或"client credentials"流 .

这只留下了“授权代码”流(通常由服务器端应用程序使用)和“隐式授权”流(通常由客户端应用程序使用) . 这两者似乎都依赖于将用户重定向到提供者的授权 endpoints ,并让提供者重定向回客户端URL . 我不知道这如何适用于移动应用程序 .

任何人都可以向我解释(甚至更好,请指教我或一些示例代码),这解释了如何做到这一点?

更新

澄清一下:OpenID Connect依赖于客户端将用户重定向到授权 endpoints ,然后将提供者 redirecting the user back 重定向到客户端 . 在客户端不是Web应用程序的情况下,这怎么可行?

3 回答

  • -1

    移动应用程序(至少在iOS和Android上)可以注册自定义URL方案,以便来自浏览器的重定向可以将用户与一些查询参数一起发送回您的应用程序 .

    因此,您可以在本机移动应用程序中使用这些流程,但它涉及将用户发送到Web浏览器(外部浏览器应用程序或应用程序内置的Web视图),以便他们通过OP进行身份验证 .

    但是,我对这整个方法的看法是,由于您正在开发自己的OP服务器和您自己的原生移动应用程序,因此移动应用程序实际上是一个受信任的客户端,让用户直接在您的应用程序中输入用户名和密码没有任何问题 . . 我可以理解为什么OpenID Connect规范不支持这一点,因为它并不是OIDC试图解决的问题,它可能会鼓励第三方应用程序请求用户直接输入用户名密码 . 但是,我希望在规范中有更多关于此问题的指导,因为我面临着类似的情况,我不知道如何继续 .

  • 10

    我认为OpenID Connect规范中的 Hybrid flow 可能是你想要使用的那个 . OpenID Connect Core Spec .

    这确实依赖于具有配置的返回URI,但正如James所说,您将使用自定义URI方案使移动操作系统在登录到您自己的应用程序后重定向 . 然后,您的应用程序将拥有一个访问代码,可用于根据需要获取访问令牌(假设您使用Oauth2来保护移动应用程序使用的后端API服务) .

    有一个漏洞可能允许恶意应用程序劫持您的URI方案并获取令牌 . 有一个草案规范要克服这个值得考虑实施的问题.2362836_ .

  • 2

    在github上查看MITREid project

    MITREid Connect此项目在Spring平台上包含Java中的OpenID Connect参考实现,包括功能正常的服务器库,可部署的服务器包,客户端(RP)库和通用实用程序库 . 该服务器可用作OpenID Connect身份提供程序以及通用OAuth 2.0授权服务器 .

相关问题