Authing 文档
文档
快速开始
概念
使用指南
开发集成
应用集成
加入 APN
多租户(内测版)
旧版
快速开始
概念
使用指南
开发集成
应用集成
加入 APN
多租户(内测版)
旧版
使用指南
  • 快速开始

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

    • 控制台概览
  • 对用户进行认证
  • 对用户进行权限管理
  • 授权
  • 管理用户账号
  • 管理用户目录
  • 同步中心(BETA)
  • 自建应用
  • ASA 表单代填
  • 单点登录 SSO
  • 成为联邦认证身份源
  • 连接外部身份源(IdP)
  • 打通微信生态
  • 迁移用户到 Authing
  • 管理组织机构
  • 自动化
  • 审计日志
  • 配置安全信息

  • 配置用户池信息

  • 部署方案
  • 常见问题 FAQs

    ¶ 使用 API & SDK 完成认证

    更新时间: 2021-06-17 12:49:23

    在前面的指引中你已经了解了如何使用 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(UserPool ID) 和应用 ID(AppID) 初始化 Java SDK 的 AuthenticationClient:

      import cn.authing.core.auth.AuthenticationClient;
      // 使用 AppId 和 appHost 进行初始化
      AuthenticationClient authentication = new AuthenticationClient(APP_ID, APP_HOST);
      
      authenticationClient.setSecret("AUTHING_APP_SECRET");
      

      ¶ 使用 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);
            } catch (JWTVerificationException exception){
                //Invalid signature/claims
            }
            

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

            ¶ 接下来

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

            上一篇: 使用内嵌登录组件完成认证 下一篇: 验证用户身份凭证(token)

            本文是否有解决您的问题?

            如果遇到其他问题,你可以在 authing-chat/community 联系我们。

            • 选择熟悉的 SDK
            • 初始化 SDK
            • 使用 SDK 认证用户
            • 验证用户 Token
            • 接下来

            用户身份管理

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

            企业内部管理

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

            开发者

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

            公司

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

            京ICP备19051205号

            beian京公网安备 11010802035968号

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