Authing 文档
文档
快速开始
概念
使用指南
开发集成 arrow
  • V2 文档
  • V3 文档
元数据
应用集成
身份自动化
加入 APN
开发集成
多租户(内测版)
控制台文档
多租户控制台
租户控制台
Saas 应用 Demo
快速开始
概念
使用指南
开发集成 arrow
  • V2 文档
  • V3 文档
元数据
应用集成
身份自动化
加入 APN
开发集成
多租户(内测版)
控制台文档
多租户控制台
租户控制台
Saas 应用 Demo
旧版
使用指南
  • 快速开始

    • 认证你的第一个用户

      • 概述
      • 使用托管登录页完成认证
      • 使用内嵌登录组件完成认证
      • 使用 API & SDK 完成认证
      • 验证用户身份凭证(token)
      • 对用户进行权限管理
      • 退出登录
      • 接下来你可能需要
    • 不同类型应用的接入方式

    • 体验期

    • 控制台概览
  • 对用户进行认证

  • 对用户进行权限管理

  • 用户自助服务

  • 授权

  • 自适应 MFA

  • 管理用户账号

  • 管理用户目录

  • 同步中心

  • 应用

  • 成为联邦认证身份源

  • 连接外部身份源(IdP)

  • 微信生态全场景能力

  • 迁移用户到 Authing

  • 管理组织机构

  • 安全设置

  • 品牌化

  • 自动化

  • 审计日志

  • 设置

  • Authing 令牌
  • 私有化部署方案

  • 常见问题 FAQ

  1. 使用指南
  2. /
  3. 快速开始

  4. /
  5. 认证你的第一个用户
  6. /
  7. 使用 API & SDK 完成认证

¶ 使用 API & SDK 完成认证

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

在前面的指引中你已经了解了如何使用 Authing 托管的登录页和内嵌登录组件实现登录注册流程,不仅如此,我们还提供 RESTful、 GraphQL 两种形式的 HTTP API,以及十余种不同语言和框架的 SDK。你可以基于这些 API & SDK 资源,灵活地组合你需要的认证流程。

¶ 选择熟悉的 SDK

Authing 同时支持了 Java、JavaScript/Node.js、Python、PHP、C#、Swift、Go、Ruby、微信小程序等多种语言的 SDK,你可以选择自己熟悉的 SDK:

  • Java/Kotlin
  • JavaScript/Node.js
  • Python
  • PHP
  • C#
  • Swift
  • Go
  • Ruby
  • 微信小程序

¶ 初始化 SDK

选择语言
Java
Loading...

    使用应用 ID(AppID) ,应用密钥(App Secret)和应用 Host(App Host)初始化 Java SDK 的 AuthenticationClient:

    如何获取?

    import cn.authing.core.auth.AuthenticationClient;
    // 使用 AppId, App Secret 和 AppHost 进行初始化
    AuthenticationClientOptions options = new AuthenticationClientOptions();
    options.setAppId("AUTHING_APP_ID");
    options.setAppSecret("AUTHING_APP_SECRET");
    options.setAppHost("AUTHING_APP_HOST");
    AuthenticationClient authenticationClient = new AuthenticationClient(options);
    
    复制成功

    ¶ 使用 SDK 认证用户

    以手机号验证码登录(如果用户账号不存在的话,会先创建一个账号)为例:

    首先发送短信验证码

    选择语言
    Java
    Loading...

      使用 sendSmsCode 方法发送验证码:

      String phone = "phone number";
      authenticationClient.sendSmsCode(phone).execute();
      
      复制成功

      然后使用手机号验证码登录:

      选择语言
      Java
      Loading...

        使用 loginByPhoneCode 方法进行手机号验证码登录:

        String phone = "phone number";
        String code = "1234";
        User user = authenticationClient.loginByPhoneCode(new LoginByPhoneCodeInput(phone, code)).execute();
        

        成功登录之后,你可以获取到该用户的用户信息,其中 token 为该用户的身份凭证,后续访问你后端资源的时候应该带上,然后在后端验证此 token 的身份。

        ¶ 验证用户 Token

        用户信息的 token 字段为标准的 OIDC IdToken,你可以在后端使用应用的 ID 和 Secret 验证此 token。

        示例的 token 如下:

        eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiI1ZjIxNTFiZWFlNWE4YjRjZTZiMGJhZTkiLCJiaXJ0aGRhdGUiOiIiLCJmYW1pbHlfbmFtZSI6IiIsImdlbmRlciI6IiIsImdpdmVuX25hbWUiOiIiLCJsb2NhbGUiOiIiLCJtaWRkbGVfbmFtZSI6IiIsIm5hbWUiOiIiLCJuaWNrbmFtZSI6IiIsInBpY3R1cmUiOiJodHRwczovL3VzZXJjb250ZW50cy5hdXRoaW5nLmNuL2F1dGhpbmctYXZhdGFyLnBuZyIsInByZWZlcnJlZF91c2VybmFtZSI6InRlc3RAZXhhbXBsZS5jb20iLCJwcm9maWxlIjoiIiwidXBkYXRlZF9hdCI6IjIwMjEtMDEtMThUMDc6NDg6NTUuNzgxWiIsIndlYnNpdGUiOiIiLCJ6b25laW5mbyI6IiIsImFkZHJlc3MiOnsiY291bnRyeSI6IiIsInBvc3RhbF9jb2RlIjoiIiwicmVnaW9uIjoiIiwiZm9ybWF0dGVkIjoiIn0sInBob25lX251bWJlciI6bnVsbCwicGhvbmVfbnVtYmVyX3ZlcmlmaWVkIjpmYWxzZSwiZW1haWwiOiJ0ZXN0QGV4YW1wbGUuY29tIiwiZW1haWxfdmVyaWZpZWQiOmZhbHNlLCJkYXRhIjp7InR5cGUiOiJ1c2VyIiwidXNlclBvb2xJZCI6IjVhOWZhMjZjZjg2MzVhMDAwMTg1NTI4YyIsImFwcElkIjoiNjAwNTNiNzQxNjQ3OGRlMmU4OGZhYjQzIiwiaWQiOiI1ZjIxNTFiZWFlNWE4YjRjZTZiMGJhZTkiLCJ1c2VySWQiOiI1ZjIxNTFiZWFlNWE4YjRjZTZiMGJhZTkiLCJfaWQiOiI1ZjIxNTFiZWFlNWE4YjRjZTZiMGJhZTkiLCJwaG9uZSI6bnVsbCwiZW1haWwiOiJ0ZXN0QGV4YW1wbGUuY29tIiwidXNlcm5hbWUiOiJ0ZXN0QGV4YW1wbGUuY29tIiwidW5pb25pZCI6bnVsbCwib3BlbmlkIjpudWxsLCJjbGllbnRJZCI6IjVhOWZhMjZjZjg2MzVhMDAwMTg1NTI4YyJ9LCJ1c2VycG9vbF9pZCI6IjVhOWZhMjZjZjg2MzVhMDAwMTg1NTI4YyIsImF1ZCI6IjYwMDUzYjc0MTY0NzhkZTJlODhmYWI0MyIsImV4cCI6MTYxMjE2NTg4OCwiaWF0IjoxNjEwOTU2Mjg4LCJpc3MiOiJodHRwczovL3NhbXBsZS1hcHAuYXV0aGluZy5jbi9vaWRjIn0.SNyGBffF-zBqDQFINGxUJZrWSAADHQhbEOsKvnH4SLg
        
        复制成功

        你可以在该网站 (opens new window)(国内用户可以访问此镜像站 (opens new window))中解码此 IdToken :

        基本上所有语言都提供了检验 IdToken 的 Library,你可以选择自己熟悉的语言:

        选择语言
        Java
        Loading...

          Java 可以使用 java-jwt (opens new window) 来验证 IdToken:

          String token = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXUyJ9.eyJpc3MiOiJhdXRoMCJ9.AbIJTDMFc7yUa5MhvcP03nJPyCPzZtQcGEp-zWfOkEE";
          try {
              Algorithm algorithm = Algorithm.HMAC256("secret");
              JWTVerifier verifier = JWT.require(algorithm)
                  .withIssuer("auth0")
                  .build(); //Reusable verifier instance
              DecodedJWT jwt = verifier.verify(token);
          
              //Get user info
              JWTClaimsSet jwtClaimSet = JWTParser.parse(token)
                  .getJWTClaimsSet();
              Map<String, Object> map = jwtClaimSet.getClaims();
          } catch (JWTVerificationException | ParseException exception){
              //Invalid signature/claims
          }
          
          复制成功

          如果验证成功,你可以获取到该 id_token 的用户信息,其中 sub 字段为用户的 ID,aud 字段为应用的 ID,你可以点此了解 IdToken 每个字段的详细释义。

          ¶ 接下来

          识别用户身份之后,你可能还需要对该用户进行权限管理,以判断用户是否对此 API 具备操作权限。

          评价此篇文档
          有帮助
          无帮助
          有建议或错误,可直接在 Github 上反馈
          若你已对系统有基本了解,并且感兴趣的话,点击跳转 Authing 控制台,来开启你的 Authing 之旅!
          进入 Authing
          上一篇: 使用内嵌登录组件完成认证 下一篇: 验证用户身份凭证(token)
          • 选择熟悉的 SDK
            • 初始化 SDK
            • 使用 SDK 认证用户
            • 验证用户 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号

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