我正在创建一个API服务器,该服务器将由稍后将要使用的移动应用程序使用。即使搜索了几个小时,我仍未看到与用户流和返回的数据相关的API最佳实践参考。
我的问题是,API的登录响应是否应返回带有刷新令牌的个人访问令牌以及用户信息?或者我应该只返回令牌并再次调用API以获取用户信息。
我可以按照自己的想法去做,但是我正在尝试学习最佳实践,这样我以后就不必进行很多调整。
我需要与我的问题相关的建议和良好参考。
谢谢。
答案 0 :(得分:2)
这取决于您用于身份验证的内容。如果您使用的是 Laravel Passport 或 JWT 之类的库,则可以使用令牌端点来返回访问令牌,刷新令牌,有效期和令牌类型(承载者)。然后,您可以拥有一个经过身份验证的终结点,该终结点将用于根据请求标头中传递的令牌来获取用户的个人资料。
但是,如果您浏览这些库的文档,则大多数情况下可以手动生成令牌。您可以在自定义端点中使用它,该端点将返回令牌以及用户配置文件Passport Manually Generate Token。
如果使用的是JWT,还可以在令牌本身中嵌入一些用户属性。客户端可以从JWT本身获取概要文件信息,而不必往返于服务器。 Passport ADD Profile to JWT
如果您以自定义方式处理身份验证,则可以在同一响应中传递令牌以及用户个人资料。
最后,由您决定最适合您的情况。
答案 1 :(得分:1)
您是否看过OpenID Connect?它是OAuth 2.0之上的另一层,并提供用户身份验证(OAuth 2.0不涵盖身份验证,只是假设它发生了)以及查找有关当前用户信息的方法。 除了OAuth访问令牌外,它还具有ID_token的概念,并且还提供了/ userinfo端点来检索有关用户的信息。 您可以可以将用户信息放入访问令牌中,但是安全性最佳做法是不允许通过JavaScript访问您的访问令牌(即使用HTTP_ONLY cookie来存储您的访问令牌)。