Mobile 混合流与移动应用程序如何工作?

Mobile 混合流与移动应用程序如何工作?,mobile,identityserver4,openid-connect,Mobile,Identityserver4,Openid Connect,我很难理解移动应用程序的混合流。我使用的是.Net中Identity Server 4提供的代码id_令牌混合流 这是我的设想。 所有移动请求都将转到后端服务器,后端服务器将代表用户将请求转发到不同的API 当用户第一次登录时 他将被重定向到identity server 将打开移动web视图 用户将使用凭据登录 identity server将向后端发送Id令牌和访问代码 服务器 后端服务器将交换Id令牌和访问令牌的访问代码 将向移动应用程序返回什么令牌以提供该用户是有效的。后端服务器是否有

我很难理解移动应用程序的混合流。我使用的是.Net中Identity Server 4提供的代码id_令牌混合流

这是我的设想。

所有移动请求都将转到后端服务器,后端服务器将代表用户将请求转发到不同的API

当用户第一次登录时

  • 他将被重定向到identity server
  • 将打开移动web视图
  • 用户将使用凭据登录
  • identity server将向后端发送Id令牌和访问代码 服务器
  • 后端服务器将交换Id令牌和访问令牌的访问代码
  • 将向移动应用程序返回什么令牌以提供该用户是有效的。后端服务器是否有责任在不提示用户重新登录直到用户注销的情况下获取新的访问令牌


    上述场景中是否存在任何步骤错误?

    对于移动客户端,建议将授权代码流与PKCE一起使用。请通读这两个答案,以了解其建议的原因

    此外,RFC8252还为本机应用程序提供了一些最佳实践应用程序(移动客户端是本机应用程序!)。因此,建议不要使用web视图

    这里有一段引用自

    以前,本地应用程序通常使用嵌入式用户代理 (通常通过web视图实现)用于OAuth授权 请求。这种方法有很多缺点,包括主机应用程序 能够复制用户凭据和cookie以及用户 需要在每个应用程序中从头开始进行身份验证

    通过使用web视图,您失去了OAuth 2.0的真正本质。您的客户端应用程序能够掌握最终用户凭据。因此,请使用浏览器而不是web视图。(请在此阅读有关嵌入式用户代理的更多信息)


    在您的体系结构中,您可以启用所有这些功能,包括PKCE、授权代码流和使用浏览器而不是web视图。但是,一旦被支持方收到代币,它就应该将它们传递给您的客户。如果您坚持这种体系结构,这将是一个挑战


    但是,如果您可以让您的移动应用程序完成整个流程,您就可以避免这种复杂性。收到令牌后,您可以通过验证令牌在支持的服务器之间创建连接。此外,当代币到期时,移动应用程序将使用刷新代币来获取新的代币

    “但是,一旦被备份的服务器接收到令牌,它就应该将它们传递给您的客户端。如果您坚持这种体系结构,这将是一个挑战。”请详细说明服务器如何将令牌推回到您的客户端?有开着的插座吗?或者任何其他推动机制?这将是一个复杂的局面。我宁愿让我的移动应用程序来处理流并获取令牌。我同意使用PKCE和系统浏览器或操作系统提供的代理混合或验证代码流是最好的方法。关于收到回复。。。这并不是一个真正的挑战,它是一条很好的路径,可以使用自定义URL方案或本地HTTP侦听器在本机应用程序中接收到授权端点响应@认识论者在您的图表中不正确的一点是,移动应用程序/设备将直接与身份服务通信,访问令牌将保留在设备上。@mackie假设移动设备将直接与身份服务器通信并接收访问令牌,但我必须在移动设备上保存客户端机密不安全的应用程序。这个问题有解决办法吗?如果移动应用程序直接与identity server通信,那么授权码通过前端通道(如浏览器)传输,访问令牌通过后端通道接收,这意味着什么。我是否感觉后端通道错误?