¶ 用户认证模块
此模块包含注册登录、重置手机号邮箱、修改账号信息等方法,是以你的终端用户(End User)的身份进行请求,适合在需要验证用户身份的情况下使用。
using Authing.ApiClient.Domain.Client.Impl.AuthenticationClient;
var authenticationClient = new AuthenticationClient(
opt =>
{
opt.AppId = "AUTHING_APP_ID",
opt.AppHost: 'https://xxx.authing.cn',
}
);
¶ 文档相关说明
- 我们尽可能在代码相关文档提供足够关键的信息来协助开发者方便,快捷完成功能实现。
- 针对绝大多数函数中,可能都具有一个 CancellationToken 类型的 cancellationToken 参数,这赋予使用者管理内部函数请求的能力,默认是
default
,考虑到绝大多数函数中都有,又默认可空,开发者在开发过程中非常容易获得相关函数信息,固不在每个函数中进行说明。 - 建议使用罗列出的函数,当然在你调用不建议使用的函数的同时,你会在函数说明看到相关不建议使用的信息。
¶ 使用邮箱注册
authenticationClient.RegisterByEmail(string email, string password, RegisterProfile profile = null, RegisterAndLoginOptions options = null)
使用邮箱注册,邮箱不区分大小写且用户池内唯一。此接口不要求用户对邮箱进行验证,用户注册之后 emailVerified 字段会为 false 。如果你希望邮箱未验证的用户不能进行登录,可以在用户池的设置 - 安全信息 中开启禁止未验证邮箱的用户登录选项:
¶ 参数
email
<string> 邮箱password
<string> 密码profile
<RegisterProfile> 用户资料options
<RegisterAndLoginOptions>options.forceLogin
<boolean> 是否走一遍完整的登录的,会触发登录前后的 pipeline 函数以及登录事件 webhook ,同时该用户的累计登录次数会加 1 。默认为 false 。options.generateToken
<boolean> 是否为该用户生成 token,不会触发登录后的完整流程,用户的累计登录次数不会加 1。默认为 false 。options.clientIp
<string> 客户端真实 IP,如果你在服务器端调用此接口,请务必将此参数设置为终端用户的真实 IP。options.customData
<KeyValueDictionary[]> 用户自定义数据,你需要先在用户池定义用户自定义数据元信息,且传入值的类型必须和定义的类型匹配。options.context
<Dictionary<string, object>[]> 请求上下文,这里设置的context
可以在 pipeline 的 context 中获取到。
¶ 示例
var email = "test@example.com";
var password = "123456";
var user = await authenticationClient.RegisterByEmail(email, password);
¶ 使用用户名注册
authenticationClient.RegisterByUsername(string username, string password, RegisterProfile profile = null, RegisterAndLoginOptions options = null)
使用用户名注册
¶ 参数
username
<string> 用户名password
<string> 密码profile
<RegisterProfile> 用户资料options
<RegisterAndLoginOptions>options.forceLogin
<boolean> 是否走一遍完整的登录的,会触发登录前后的 pipeline 函数以及登录事件 webhook ,同时该用户的累计登录次数会加 1 。默认为 false 。options.generateToken
<boolean> 是否为该用户生成 token,不会触发登录后的完整流程,用户的累计登录次数不会加 1。默认为 false 。options.clientIp
<string> 客户端真实 IP,如果你在服务器端调用此接口,请务必将此参数设置为终端用户的真实 IP。options.customData
<KeyValueDictionary[]> 用户自定义数据,你需要先在用户池定义用户自定义数据元信息,且传入值的类型必须和定义的类型匹配。options.context
<Dictionary<string, object>[]> 请求上下文,这里设置的context
可以在 pipeline 的 context 中获取到。
¶ 示例
var username = "test";
var password = "123456";
var user = await authenticationClient.RegisterByUsername(email, password);
¶ 使用手机号注册
authenticationClient.RegisterByPhoneCode(string phone, string code, string password = null, RegisterProfile profile = null, RegisterAndLoginOptions options = null)
使用手机号注册,你可以同时设置该账号的初始密码。发送短信的接口请见 sendSmsCode
¶ 参数
phone
<string> 手机号code
<string> 短信验证码password
<string> 初始密码profile
<RegisterProfile> 用户资料options
<RegisterAndLoginOptions>options.forceLogin
<boolean> 是否走一遍完整的登录的,会触发登录前后的 pipeline 函数以及登录事件 webhook ,同时该用户的累计登录次数会加 1 。默认为 false 。options.generateToken
<boolean> 是否为该用户生成 token,不会触发登录后的完整流程,用户的累计登录次数不会加 1。默认为 false 。options.clientIp
<string> 客户端真实 IP,如果你在服务器端调用此接口,请务必将此参数设置为终端用户的真实 IP。options.customData
<KeyValueDictionary[]> 用户自定义数据,你需要先在用户池定义用户自定义数据元信息,且传入值的类型必须和定义的类型匹配。options.context
<Dictionary<string, object>[]> 请求上下文,这里设置的context
可以在 pipeline 的 context 中获取到。
¶ 示例
var phone = "phone number";
var code = "1234";
var password = "123456";
var user = await authenticationClient.RegisterByPhoneCode(phone, code, password);
¶ 使用邮箱登录
authenticationClient.LoginByEmail(string email, string password, RegisterAndLoginOptions options = null)
使用邮箱登录,该接口默认不会限制未验证的邮箱进行登录,如果你希望邮箱未验证的用户不能进行登录,可以使用 pipeline 对此类请求进行拦截。
如果你的用户池配置了登录失败检测,当同一 IP 下登录多次失败的时候会要求用户输入图形验证码(code 为 2000)。
¶ 参数
email
<string> 邮箱password
<string> 密码options
<RegisterAndLoginOptions>options.forceLogin
<boolean> 是否走一遍完整的登录的,会触发登录前后的 pipeline 函数以及登录事件 webhook ,同时该用户的累计登录次数会加 1 。默认为 false 。options.generateToken
<boolean> 是否为该用户生成 token,不会触发登录后的完整流程,用户的累计登录次数不会加 1。默认为 false 。options.clientIp
<string> 客户端真实 IP,如果你在服务器端调用此接口,请务必将此参数设置为终端用户的真实 IP。options.customData
<KeyValueDictionary[]> 用户自定义数据,你需要先在用户池定义用户自定义数据元信息,且传入值的类型必须和定义的类型匹配。options.context
<Dictionary<string, object>[]> 请求上下文,这里设置的context
可以在 pipeline 的 context 中获取到。options.captchaCode
<string> 图形验证码。
¶ 示例
var email = "test@example.com";
var password = "123456";
var user = await authenticationClient.LoginByEmail(email, password);
¶ 使用用户名登录
authenticationClient.LoginByUsername(string username, string password, RegisterAndLoginOptions options = null)
使用用户名登录。如果你的用户池开启了登录失败检测,当同一 IP 下登录多次失败的时候会要求用户输入图形验证码(错误码 为 2000)。
¶ 参数
username
<string> 用户名password
<string> 密码options
<RegisterAndLoginOptions>options.clientIp
<string> 客户端真实 IP,如果你在服务器端调用此接口,请务必将此参数设置为终端用户的真实 IP。options.autoRegister
<boolean> 是否自动注册。如果检测到用户不存在,会根据登录账密自动创建一个账号。options.context
<Dictionary<string, object>[]> 请求上下文,这里设置的context
可以在 pipeline 的 context 中获取到。options.captchaCode
<string> 图形验证码。
¶ 示例
var username = "username";
var password = "123456";
var user = await authenticationClient.LoginByUsername(username, password);
¶ 使用手机号验证码登录
authenticationClient.LoginByPhoneCode(string phone, string code, RegisterAndLoginOptions options = null)
使用手机号验证码登录。你需要先使用 sendSmsCode 方法发送短信验证码。
¶ 参数
phone
<string> 手机号code
<string> 短信验证码options
<RegisterAndLoginOptions>options.clientIp
<string> 客户端真实 IP,如果你在服务器端调用此接口,请务必将此参数设置为终端用户的真实 IP。options.autoRegister
<boolean> 是否自动注册。如果检测到用户不存在,会根据登录账密自动创建一个账号。options.context
<Dictionary<string, object>[]> 请求上下文,这里设置的context
可以在 pipeline 的 context 中获取到。param.captchaCode
<string> 图形验证码。
¶ 示例
var phone = "phone number";
var code = "1234";
var user = await authenticationClient.LoginByPhoneCode(phone, code);
¶ 使用手机号密码登录
authenticationClient.LoginByPhonePassword(string phone, string password, RegisterAndLoginOptions options = null)
如果用户绑定了手机号且设置了密码,可以使用手机号 + 密码的方式登录。如果你的用户池开启了登录失败检测,当同一 IP 下登录多次失败的时候会要求用户输入图形验证码(错误码 为 2000)。
¶ 参数
phone
<string> 手机号password
<string> 密码options
<RegisterAndLoginOptions>options.clientIp
<string> 客户端真实 IP,如果你在服务器端调用此接口,请务必将此参数设置为终端用户的真实 IP。options.autoRegister
<bool> 是否自动注册。如果检测到用户不存在,会根据登录账密自动创建一个账号。options.context
<Dictionary<string, object>[]> 请求上下文,这里设置的context
可以在 pipeline 的 context 中获取到。param.captchaCode
<string> 图形验证码。
¶ 示例
var phone = "phone number";
var password = "123456";
var user = await authenticationClient.LoginByPhonePassword("phone", "password");
¶ 使用子账户登录
authenticationClient.LoginBySubAccount(string account, string password, RegisterAndLoginOptions options = null)
使用子账户登录。
¶ 参数
username
<string> 用户名password
<string> 密码options
<RegisterAndLoginOptions> 配置对象,可选参数。options.captchaCode
<string> 图形验证码options.clientIp
<string> 客户端真实 IP,如果你在服务器端调用此接口,请务必将此参数设置为终端用户的真实 IP。
¶ 示例
var account = "account";
var password = "1234";
var user = await authenticationClient.LoginBySubAccount(phone, code);
¶ 使用 LDAP 用户名登录
authenticationClient.LoginByLdap(string username, string password,)
使用 LDAP 身份源的账号密码登录。如果此账号第一次登录,将会将其用户信息导入到用户池的用户目录中;之后再次登录,将会根据获取到的最新的账号资料更新此账号的用户信息。
点此查看连接 LDAP 身份源文档。
¶ 参数
username
<string> 用户名password
<string> 密码
¶ 示例
var user = await authenticationClient.LoginByLdap("username", "password");
¶ 使用 AD 用户名登录
authenticationClient.LoginByAd(string username, string password)
使用 AD 域的账号登录。如果此账号第一次登录,将会将其用户信息导入到用户池的用户目录中;之后再次登录,将会根据获取到的最新的账号资料更新此账号的用户信息。 点此查看连接 Active Directory 身份源文档。
点此查看连接 LDAP 身份源文档。
¶ 参数
username
<string> 用户名password
<string> 密码
¶ 示例
var user = await authenticationClient.LoginByAd("admin", "admin");
¶ 获取当前登录的用户信息
authenticationClient.GetCurrentUser()
获取当前登录用户的用户信息,需要 authenticationClient 当前处于已登录状态才能获取到。你可以通过两种方式设置 authenticationClient 的登录状态:
- 调用登录接口(如密码登录、手机号验证码登录、社会化登录)之后,managementClient 会缓存用户的 id_token,从而记住登录状态;
- 通过用户的 id_token 初始化 managementClient。
¶ 示例
var user = await authenticationClient.GetCurrentUser();
¶ 判断是否登录
authenticationClient.CheckLoggedIn()
判断是否登录
¶ 示例
authenticationClient.CheckLoggedIn();
¶ 获取当前用户的自定义数据列表
authenticationClient.ListUdv()
获取当前用户的自定义数据列表 需要用户先登录
¶ 参数
无
¶ 示例
authenticationClient.ListUdv()
¶ 添加用户自定义数据
authenticationClient.SetUdv(string key, object value)
添加用户自定义数据 需要用户先登录
¶ 参数
key
<string> 自定义数据的 Keyvalue
<object> 自定义数据的 Value
¶ 示例
authenticationClient.SetUdv("key", "value)
¶ 获取用户所在组织机构数据列表
authenticationClient.ListOrgs(string userId)
获取用户所在组织机构数据列表 需要用户先登录
¶ 示例
authenticationClient.ListOrgs("userId")
¶ 设置当前用户信息
authenticationClient.SetCurrentUser(User user)
¶ 参数
User
<User>User.Id
<string> 用户 IDUser.UserPoolId
<string> 用户池 IDUser.Username
<string> 用户名,用户池内唯一User.Email
<string> 邮箱,用户池内唯一User.EmailVerified
<string> 邮箱是否已验证User.Phone
<bool> 手机号,用户池内唯一User.PhoneVerified
<bool> 手机号是否已验证User.Unionid
<string>User.Openid
<string>User.Nickname
<string> 昵称,该字段不唯一User.RegisterSource
<List<string>>User.Photo
<string> 头像链接,默认为 https://usercontents.authing.cn/authing-avatar.pngUser.Password
<string> 用户密码,数据库使用密钥加 salt 进行加密,非原文密码。User.Oauth
<string> 用户社会化登录第三方身份提供商返回的原始用户信息,非社会化登录方式注册的用户此字段为空User.Token
<string> 用户登录凭证,开发者可以在后端检验该 token 的合法性,从而验证用户身份。详细文档请见:验证 Token (opens new window)User.TokenExpiredAt
<string> token 过期时间User.LoginsCount
<string> 用户登录总次数份。详细文档请见:验证 Token (opens new window)User.LastIp
<string> 用户上一次登录时使用的 IPUser.SignedUp
<string> 用户注册时间User.Blocked
<bool> 该账号是否被禁用User.IsDeleted
<bool> 账号是否被软删除
¶ 示例
var user = new User(){
Id = "Id"
UserPoolId = "UserPoolId"
}
authenticationClient.SetCurrentUser(user)
¶ 设置当前 AccessToken
authenticationClient.SetToken(string token)
¶ 参数
token
<string> 用户 ID
获取用户所在组织机构数据列表 需要用户先登录
¶ 示例
authenticationClient.SetToken("TOKEN")
¶ 获取用户所在组织机构数据列表
authenticationClient.ListOrgs(string userId)
¶ 参数
userId
<string> 用户 ID
获取用户所在组织机构数据列表 需要用户先登录
¶ 示例
authenticationClient.ListOrgs("userId")
¶ 退出登录
authenticationClient.Logout(LogoutParam logoutParam)
用于用户退出登录
- 清空该用户在当前应用下的 session 会话信息;
- 将用户当前的
id_token
标记为已失效,使用此id_token
将调用 Authing 接口无法获取到相关数据。
¶ 参数
LogoutParam.AppId
<string> App idlogoutParam.UserId
<string> 用户id
¶ 示例
var option = new LogoutParam(){
AppId = "AppId",
UserId = "UserId"
}
await authenticationClient.Logout(option);
¶ 发送短信验证码
authenticationClient.SendSmsCode(string phone)
发送短信验证码, 短信验证码的有效时间为 60 s。
¶ 参数
phone
<string>
¶ 示例
var phone = "phone number";
await authenticationClient.SendSmsCode(phone);
¶ 发送邮件
authenticationClient.SendEmail(string email, EmailScene scene)
主动发送邮件给用户,目前支持的 4 类邮件包含:重置密码邮件、验证邮箱邮件、修改邮箱验证码邮件、MFA 验证邮件。同时你可以自定义邮件模版和配置第三方邮件服务商。
¶ 参数
email
<string> 邮箱scene
<EmailScene> 发送场景,可选值为 RESET_PASSWORD(发送重置密码邮件,邮件中包含验证码)、VERIFY_EMAIL(发送验证邮箱的邮件)、CHANGE_EMAIL(发送修改邮箱邮件,邮件中包含验证码)RESET_PASSWORD
: 发送重置密码邮件,邮件中包含验证码;VERIFY_EMAIL
: 发送验证邮箱的邮件;CHANGE_EMAIL
: 发送修改邮箱邮件,邮件中包含验证码;MFA_VERIFY
: 发送 MFA 验证邮件。
¶ 示例
using Authing.ApiClient.Types;
var message = await authenticationClient.SendEmail("test@example.com", EmailScene.RESET_PASSWORD);
¶ 获取自定义数据
authenticationClient.GetUdfValue()
获取用户的所有自定义数据。你需要先在用户池定义用户自定义数据元信息。
¶ 示例
var udfValue = await authenticationClient.GetUdfValue();
¶ 设置自定义数据
authenticationClient.SetUdfValue(KeyValueDictionary data)
设置用户的自定义字段。你需要先在用户池定义用户自定义数据元信息,且传入值的类型必须和定义的类型匹配。如果设置失败,会抛出异常,你需要对异常进行捕捉。
¶ 参数
data
<KeyValueDictionary> 输入数据,类型为一个对象,详情请见示例。
¶ 示例
var data = new KeyValueDictionary()
{
{
key: "your key1",
value: "your value2"
},
{
key: "your key1",
value: "your value2"
},
};
var udfValue = await authenticationClient.SetUdfValue(data);
¶ 删除自定义数据
authenticationClient.RemoveUdfValue(string key);
删除自定义数据。
¶ 参数
key
<string> 自定义字段的 key 。
¶ 示例
var key = "key";
var flag = await authenticationClient.RemoveUdfValue(key);
¶ 检测 Token 登录状态
authenticationClient.CheckLoginStatus(string token)
¶ 参数
token
<string> 用户的登录凭证 token
¶ 示例
var token = "TOKEN";
var status = await authenticationClient.CheckLoginStatus(token);
¶ 示例数据
- 成功示例
{
"code": 200,
"message": "已登录",
"status": true,
"exp": 1620732833,
"iat": 1619523233,
}
- 失败示例
{
"code": 2206,
"message": "登录信息已过期",
"status": false,
"exp": null,
"iat": null,
}
¶ 通过短信验证码重置密码
authenticationClient.ResetPasswordByPhoneCode(string phone, string code, string newPassword)
通过短信验证码重置密码,你可以通过 sendSmsCode 方法发送短信验证码。
¶ 参数
phone
<string> 手机号code
<string> 验证码newPassword
<string> 新的密码
¶ 示例
var phone = "phone number";
var code = "1234";
var password = "123456";
var message = await authenticationClient.ResetPasswordByPhoneCode(phone, code, password);
¶ 通过邮件验证码重置密码
authenticationClient.ResetPasswordByEmailCode(string phone, string code, string newPassword)
通过邮件验证码重置密码,你需要先调用 sendEmail 接口发送重置密码邮件(场景值为
RESET_PASSWORD
)。
¶ 参数
phone
<string> 手机号code
<string> 验证码newPassword
<string> 新的密码
¶ 示例
var email = "test@example.com";
var code = "1234";
var password = "123456";
var message = await authenticationClient.ResetPasswordByEmailCode(email, code, password);
¶ 修改用户资料
authenticationClient.UpdateProfile(UpdateUserInput updates)
修改用户资料,此接口不能用于修改手机号、邮箱、密码,如果需要请调用 updatePhone、updateEmail、updatePassword 接口。
¶ 参数
updates
<UpdateUserInput> 修改的用户资料updates.username
<string> 用户名updates.nickname
<string> 昵称updates.photo
<string> 头像updates.company
<string> 公司updates.browser
<string> 浏览器updates.device
<string> 设备updates.lastIP
<string> 最近登录的 IPupdates.name
<string> Nameupdates.givenName
<string> Given Nameupdates.familyName
<string> Family Nameupdates.middleName
<string> Middle Nameupdates.profile
<string> Profile Urlupdates.preferredUsername
<string> Preferred Nameupdates.website
<string> 个人网站updates.gender
<string> 性别, M(Man) 表示男性、F(Female) 表示女性、未知表示 U(Unknown)updates.birthdate
<string> 生日updates.zoneinfo
<string> 时区updates.locale
<string> 语言updates.address
<string> 地址updates.streetAddress
<string> 街道地址updates.locality
<string>updates.region
<string> 地域updates.postalCode
<string> 邮编updates.city
<string> 城市updates.province
<string> 省份updates.country
<string> 国家
¶ 示例
var user = await authenticationClient.UpdateProfile
(
new UpdateUserInput()
{
Nickname = "nickname",
username = "username"
}
);
¶ 更新用户密码
authenticationClient.UpdatePassword(string newPassword, string oldPassword)
更新用户密码
¶ 参数
newPassword
<string> 新密码oldPassword
<string> 旧密码,如果用户没有设置密码,可以不填。
¶ 示例
var oldPassword = "111111";
var newPassword = "123456";
await authenticationClient.UpdatePassword(newPassword, oldPassword);
¶ 绑定手机号
authenticationClient.BindPhone(string phone, string phoneCode)
用户初次绑定手机号,如果需要修改手机号请使用 updatePhone 方法。如果该手机号已被绑定,将会绑定失败。发送验证码请使用 sendSmsCode 方法。
终端用户也可以在个人中心自助绑定手机号:
¶ 参数
phone
<string>phoneCode
<string>
¶ 示例
var phone = "phone number";
var phoneCode = "1234"
await authenticationClient.BindPhone(phone, phoneCode);
¶ 解绑手机号
authenticationClient.UnbindPhone(CancellationToken cancellationToken = default);
用户解绑手机号,如果用户没有绑定其他登录方式(邮箱、社会化登录账号),将无法解绑手机号,会提示错误。
终端用户也可以在个人中心自助解绑手机号:
¶ 示例
var user = await authenticationClient.UnbindPhone("CancellationToken");
¶ 更新用户手机号
authenticationClient.UpdatePhone(string phone, string phoneCode, string oldPhone = null, string oldPhoneCode = null)
更新用户手机号。和修改邮箱一样,默认情况下,如果用户当前已经绑定了手机号,需要同时验证原有手机号(目前账号绑定的手机号)和当前邮箱(将要绑定的手机号)。 也就是说,用户 A 当前绑定的手机号为 15888888888,想修改为 15899999999,那么就需要同时验证这两个手机号。 开发者也可以选择不开启 “验证原有手机号“ ,可以在 Authing 控制台的设置目录下的安全信息模块进行关闭。
用户首次绑定手机号请使用 bindPhone 接口。
¶ 参数
phone
<string> 新手机号phoneCode
<string> 新手机号的验证码oldPhone
<string> 旧手机号oldPhoneCode
<string> 旧手机号的验证码
¶ 示例
await authenticationClient.UpdatePhone("newPhone", "newPhoneCode");
¶ 绑定邮箱
authenticationClient.BindEmail(string email, string emailCode)
用于用户初次绑定邮箱,需检验邮箱验证码。如果需要修改邮箱请使用 updateEmail 方法。如果该邮箱已被绑定,将会绑定失败。发送邮件验证码请使用 sendEmail 方法。 终端用户也可以在个人中心自助绑定邮箱:
¶ 参数
email
<string> 邮箱emailCode
<string> 邮件验证码,可通过 sendEmail 方法获得,EmailScene 为 CHANGE_EMAIL。
¶ 示例
var user = await authenticationClient.BindEmail("demo@authing.cn", "1234");
¶ 解绑邮箱
authenticationClient.UnbindEmail()
用户解绑手机号,如果用户没有绑定其他登录方式(手机号、社会化登录账号),将无法解绑邮箱,会提示错误。
终端用户也可以在个人中心自助解绑邮箱:
¶ 示例
var user = await authenticationClient.UnbindEmail();
¶ 更新用户邮箱
authenticationClient.UpdateEmail(string email, string emailCode, string oldEmail = null, string oldEmailCode = null)
authenticationClient.updateEmail(email, emailCode, oldEmail, oldEmailCode)如果用户已经绑定了邮箱,默认情况下,需要同时验证原有邮箱(目前账号绑定的邮箱)和当前邮箱(将要绑定的邮箱)。也就是说,用户 A 当前绑定的邮箱为 123456@qq.com,想修改为 1234567@qq.com,那么就需要同时验证这两个邮箱。 开发者也可以选择不开启 “验证原有邮箱“ ,可以在 Authing 控制台的设置目录下的安全信息模块进行关闭。
用户首次绑定邮箱请使用 bindEmail 接口。
¶ 参数
email
<string> 新邮箱emailCode
<string> 新邮箱的验证码oldEmail
<string> 旧邮箱oldEmailCode
<string> 旧邮箱的验证码
¶ 示例
var newEmail = "new@example.com";
var emailCode = "1234"
await authenticationClient.UpdateEmail(newEmail, emailCode);
¶ 刷新当前用户的 token
authenticationClient.RefreshToken()
刷新当前用户的 token,调用此接口要求先登录。
¶ 示例
authenticationClient.RefreshToken()
¶ 合并账号身份信息
authenticationClient.LinkAccount(string primaryUserToken, string secondaryUserToken)
将一个 Authing 子账号的外部身份源(如微信、GitHub、自定义 OIDC 身份源等)身份信息合并到一个 Authing 主账号上,同时删除子账号。
若用户原先使用某一身份源可以登录到子账号,合并之后,用户再用此身份源登录,将登录到主账号。
注意,除来自外部身份源的身份信息外,子账号的一切信息都会在合并后丢失!
¶ 参数
primaryUserToken
<string> 主账号 TokensecondaryUserToken
<string> 子账号 Token
¶ 示例
var primaryUserToken = "test";
var secondaryUserToken = "test";
var message = await authenticationClient.LinkAccount(primaryUserToken, secondaryUserToken);
¶ 检查密码强度
authenticationClient.CheckPasswordStrength(string password)
检查密码强度,详情请见 密码策略。
判断密码是否符合密码强度要求。Authing 中密码强度等级分为以下几种:
- 任意非空字符串;
- 至少 6 位字符;
- 至少 6 位字符,且须包含英文、数字与符号中的两种;
- 至少 6 位字符,且密码中须包含英文、数字与符号。
¶ 参数
password
<string> 密码
¶ 示例
var result = await authenticationClient.CheckPasswordStrength("******");
¶ 计算密码安全等级
authenticationClient.ComputedPasswordSecurityLevel(string password)
计算密码安全等级。
¶ 参数
password
: 需要计算的密码(明文格式),必须为string
类型;
¶ 示例
var securityLevel = authenticationClient.ComputedPasswordSecurityLevel(
"xxxxxxxx"
);
¶ 获取用户账号安全等级
authenticationClient.GetSecurityLevel(CancellationToken cancellationToken)
获取用户账号安全等级。
¶ 示例
var result = authenticationClient.GetSecurityLevel("cancellationToken");
¶ 获取当前用户能够访问的应用
authenticationClient.ListApplications(ListParams _params = null)
获取当前用户能够访问的应用。
¶ 参数
_params
<ListParams>,选填_params.Page
<int> 分页序号, 默认为 1。_params.Limit
<int> 每页返回的个数, 默认为 10。
¶ 示例
var resData = await authenticationClient.ListApplications(
new ListParams()
{
Page = 1,
Limit = 10,
}
);
¶ 获取用户被授权的所有资源列表
authenticationClient.ListAuthorizedResources(string namespace)
获取一个用户被授权的所有资源,用户被授权的所有资源里面包括从角色、分组、组织机构继承的资源。
¶ 参数
namespace
<string> 权限分组的 code,详情请见使用权限分组管理权限资源。
¶ 示例
var res = authenticationClient.ListAuthorizedResources("namespace");
¶ 生成一个 PKCE 校验码
authenticationClient.GenerateCodeChallenge()
生成一个 PKCE 校验码,长度必须大于等于 43
¶ 生成一个 PKCE 校验码摘要值
authenticationClient.GetCodeChallengeDigest("param")
生成一个 PKCE 校验码摘要值
¶ 参数
param
<CodeChallengeDigestParam> PKCE 校验码、摘要算法参数param.codeChallenge
<string> 待生成摘要值的 code_challenge 原始值,一个长度大于等于 43 的随机字符串。param.method
<string> 可以为 plain、S256,表示计算 code_challenge 时使用的摘要算法,plain 表示不用任何算法原样返回,S256 表示使用 SHA256 计算 code_challenge 摘要。
¶ 判断当前用户是否有某个角色
authenticationClient.hasRole(string userId, string roleCode, string _namespace = null)
判断当前用户是否有某个角色
¶ 参数
roleCode
<string> 角色编码 Codenamespace
<string> 权限分组的 Code,详情请见使用权限分组管理权限资源。_namespace
<string> 权限分组 ID
¶ 示例
authenticationClient.hasRole("roleCode", "default");
¶ 判断用户是否存在
authenticationClient.Exists(ExistsOption options)
判断用户是否存在
¶ 参数
options.username
<string> 用户名options.email
<string> 用户邮箱options.phone
<string> 用户手机号options.externalId
<string> 用户外部 Id
¶ 示例
authenticationClient.Exists("username", "email", "phone", "externalId")
¶ 检验 CAS 1.0 Ticket 合法性
authenticationClient.ValidateTicketV1(ticket, service)
检验 CAS 1.0 Ticket 合法性
¶ 参数
ticket
<string> CAS 认证成功后,Authing 颁发的 ticket。service
<string> CAS 回调地址
¶ 示例
authenticationClient.validateTicketV1("ticket", "service");
¶ 获取当前用户
authenticationClient.GetCurrentUser( string token)
¶ 参数
token
<string> 用户 ID
¶ 示例
authenticationClient.GetCurrentUser("token")
¶ 通过首次登录的 Token 重置密码
authenticationClient.ResetPasswordByFirstLoginToken(string token, string password)
¶ 参数
token
<string> 登录的Tokenpassword
<string> 密码
¶ 示例
authenticationClient.ResetPasswordByFirstLoginToken("token","password")
¶ 通过密码强制跟临时 Token 修改密码
authenticationClient.ResetPasswordByForceResetToken(string token, string oldPassword, string newPassword)
¶ 参数
token
<string> 登录的TokenoldPassword
<string> 旧密码newPassword
<string> 新密码
¶ 示例
authenticationClient.ResetPasswordByFirstLoginToken("token","old_password","new_password")
¶ 移除用户自定义字段的值
authenticationClient.RemoveUdv(string key)
移除用户自定义字段的值
¶ 参数
key
<string> 自定义字段的 key 。
¶ 示例
var flag = await authenticationClient.RemoveUdv("key");
¶ 获取当前用户所有部门
authenticationClient.ListDepartment()
¶ 示例
var result = await authenticationClient.ListDepartment();
¶ 判断用户是否存在
authenticationClient.IsUserExists(string userName = null, string email = null, string phone = null, string externalId = null)
¶ 参数
userName
<string> 用户名email
<string> 邮箱phone
<string> 手机号externalId
<string> externalId
¶ 示例
authenticationClient.IsUserExists("userName","email")
¶ 检测密码是否合法
authenticationClient.isPasswordValid(string password)
¶ 参数
password
<string> 密码
¶ 示例
authenticationClient.isPasswordValid("password")
¶ 通过微信登录
authenticationClient.LoginByWechat(string code)
¶ 参数
code
<string> code
¶ 示例
authenticationClient.LoginByWechat("code")
¶ 获取Token
authenticationClient.GetToken()
¶ 示例
authenticationClient.GetToken()