适用于移动应用的OAuth2流程

sam*_*977 3 mobile oauth-2.0 identityserver4

我们有一个预先存在的移动应用程序.用户将注册他的用户名和密码.目前,我们有基于自定义令牌的身份验证 我们希望切换到OAuth2而不影响用户体验.看起来资源所有者密码凭证对我们来说是最接近的流程,但是有很多建议反对使用它们......任何其他推荐...我们计划使用IdentityServer4

Kav*_*uwa 6

tldr; 使用授权代码流程+ PKCE

资源所有者密码凭据授予适用于无法转换(迁移)到完全OAuth客户端的客户端.另外,请注意规范严格提及与客户端和最终用户的信任关系.

规格

资源所有者密码凭证授予类型适用于资源所有者与客户端具有信任关系的情况,例如设备操作系统高权限应用程序.启用此授权类型时,授权服务器应特别小心,并且只有在其他流不可行时才允许它.

所以你听到的是正确的.如果您没有选择,则必须使用此选项.请注意,通过使用此流程,您将失去OAuth 2.0的精髓.您将向客户端公开最终用户凭据.

转到OAuth 2.0

移动客户是公共客户.移动客户端的推荐授权是授权代码授予类型.此外,由于它是一个公共客户端,您必须使用PKCE(OAuth公共客户端的代码交换证明密钥).PKCE为授权代码授权类型添加了额外的保护层.

迁移到OAuth 2.0将需要更改您的移动应用程序.您将不得不重新设计应用程序的登录功能.但是不要害怕,有很多好的库可用于支持PKCE的OAuth 2.0.IdentityServer4也将支持这些协议.

如果您采用OAuth 2.0,则可以无缝更改授权服务器(使用某些配置).这意味着相同的应用程序可以使用来自不同授权服 所以请使用授权代码流程+ PKCE