Authing 文档文档
快速开始
概念
使用指南
开发集成 V2 arrow
  • V2 文档
  • V3 文档
元数据
应用集成
身份自动化
加入 APN
开发集成
多租户(内测版)
控制台文档
多租户控制台
租户控制台
Saas 应用 Demo
快速开始
概念
使用指南
开发集成 V2 arrow
  • V2 文档
  • V3 文档
元数据
应用集成
身份自动化
加入 APN
开发集成
多租户(内测版)
控制台文档
多租户控制台
租户控制台
Saas 应用 Demo
旧版
开发集成
  • JavaScript SDK 索引
  • 单点登录(SSO)
  • 登录组件 (Guard)

  • 多因素认证组件(MFA)

  • JavaScript / Node.js

  • Java / Kotlin

  • Python

  • C#

  • PHP

  • Go

  • Ruby
  • Delphi
  • Android

    • 快速开始
    • 托管页
    • 超组件

    • APIs

    • 第三方身份源

    • 典型场景

      • 应用常用配置
      • 退出登录
      • 闪屏界面
      • 凭证管理
      • 个人中心
      • WebView
      • 海外场景
      • 生物认证
      • Authing OTP
      • 设备管理
    • 私有化部署
    • Android Guard 更新日志
    • 合规使用指南
    • 返回码对照表
  • iOS

  • Flutter

  • 微信小程序
  • 微信网页授权
  • React Native
  • 框架集成

  • Radius
  • 错误代码

¶ 凭证管理

更新时间: 2025-02-18 09:00:47
编辑

¶ 用户标识凭证(ID token)

通过 Guard 完成认证后,默认返回的 token 叫做 ID token,即 用户标识凭证。对用户信息的各种操作都需要校验 ID token。虽然业务后台也可以用 ID token 作为资源管理凭证,但更为普遍的做法是引入另外两个凭证:访问凭证(Access token) 和 刷新凭证(Refresh token)

¶ 访问凭证(Access token)

一般使用访问凭证来控制资源访问。

Access token 和 ID token 一样,一般都以 JWT 的形式出现,但其 encode 的内容有所不同。根据授权 scope,ID token 可以包含很多个人信息以及扩展信息。而 access token 只应该包含极少的关键信息,不应该包含任何个人信息。

另外,access token 的有效期一般都非常短,通常为数小时,敏感系统的有效期甚至只有数十分钟。这是因为从业务角度看,访问凭证和个人凭证确实应该有不同的有效期。对于业务操作,如转账,需要及时闭环。而更新个人头像却不用太着急。

实际上,我们甚至可以创造更多的凭证,每个凭证都有自己的业务含义,后台系统可以要求前端应用传入准确的凭证。只不过,对于大多数业务系统来说,统一的访问凭证就已经可以满足业务诉求了。

¶ 刷新凭证(Refresh token)

由于访问凭证时效性很短,一旦过期,就需要用户重新登录。这在一些场景下用户是可以接受的,如银行类 App,但大多数场景,这样的设计会严重影响用户体验。于是就有了 刷新凭证

当访问凭证过期后,App 可以通过刷新凭证来获取新的 用户标识凭证 和 访问凭证。

¶ 获取刷新凭证

根据 OIDC 协议规范,获取刷新凭证必须在授权请求的 scope 里面包含 offline_access。

若 App 通过 WebView 进行登录,推荐使用 Guard 提供的 WebView 来接入,请参考:WebView

Guard 默认的 scope 里面会包含 offline_access,同时在登录 URL 上会拼接:prompt=consent 因为我们认为获取刷新凭证是移动 App 的默认行为

若 App 通过原生方式进行认证,首先参考这里唤起认证界面: 快速接入

然后将示例中的:

AuthFlow.start(this);

替换为:

AuthFlow flow = AuthFlow.start(this);
flow.setAuthProtocol(AuthContainer.AuthProtocol.EOIDC);

1.4.1 版本之后此方式弃用,改为在调用 AuthFlow.start(this) 之前调用 Authing.setAuthProtocol(Authing.AuthProtocol.EOIDC);

OIDC 协议涉及到多个网络请求,所以会更耗时

在认证回调的 UserInfo 对象里面,可以通过下面代码获取 Refresh token:

String refreshToken = userInfo.getRefreshToken();

¶ 通过刷新凭证换取新的访问凭证和用户标识凭证

无论是采用 WebView 还是原生的方式,都可以通过以下 API 来刷新访问凭证和用户标识凭证

刷新凭证 (opens new window)

上一篇: 闪屏界面 下一篇: 个人中心
  • 用户标识凭证(ID token)
  • 访问凭证(Access token)
  • 刷新凭证(Refresh token)

用户身份管理

集成第三方登录
手机号闪验 (opens new window)
通用登录表单组件
自定义认证流程

企业内部管理

单点登录
多因素认证
权限管理

开发者

开发文档
框架集成
博客 (opens new window)
GitHub (opens new window)
社区用户中心 (opens new window)

公司

400 888 2106
sales@authing.cn
北京市朝阳区北辰世纪中心 B 座 16 层(总)
成都市高新区天府五街 200 号 1 号楼 B 区 4 楼 406 室(分)

京ICP备19051205号

beian京公网安备 11010802035968号

© 北京蒸汽记忆科技有限公司