如何通过WSO2 IS实现仅手机号+SMS OTP认证获取Access Token
基于WSO2 Identity Server实现手机号+SMS OTP认证并生成Access Token方案
前置配置(WSO2 IS侧预完成)
- 对接SMS短信网关:登录WSO2 IS管理控制台,依次进入
身份提供商 > Resident Identity Provider > 账户管理 > SMS OTP配置,填入你使用的第三方SMS网关的接口地址、请求鉴权信息、短信模板等参数,配置完成后先做短信发送测试,确保功能正常。 - 配置用户属性:确认用户存储方案中已开放
mobile(手机号)字段的读写权限,后续WSO2 IS会通过该字段匹配对应用户账号。 - 注册移动端服务提供商:在WSO2 IS控制台进入
服务提供商 > 新增,创建对应移动端应用的服务提供商配置,再进入入站认证配置 > OAuth/OpenID Connect配置,记录生成的Client ID,如果是公开类型的移动端应用可选择Public客户端类型,无需配置Client Secret,同时开启自定义授权类型支持。 - 适配SMS OTP授权类型:基于WSO2 IS的扩展授权开发点新增自定义授权类型,命名为
sms_otp,也可以直接使用WSO2 IS官方提供的OTP认证扩展包完成适配。
完整认证流程
- 用户在移动端应用内输入本人手机号,应用将手机号发送到WSO2 IS的OTP触发接口
调用WSO2 IS的
/api/identity/user/v1/me/sms-otp接口即可触发OTP发送,请求头携带应用的Client ID完成应用身份校验,请求体传入用户填写的手机号。WSO2 IS会先校验该手机号是否对应用户存储内的有效账号,校验通过后自动生成随机OTP,通过之前配置的SMS网关发送到该手机号。如果需要支持新用户免注册直接登录,可以在校验到手机号无对应账号时,自动创建新用户再发送OTP。
- 用户收到短信后,在应用内输入收到的OTP,应用携带以下参数调用WSO2 IS的OAuth2令牌接口
/oauth2/token申请Access Token:
grant_type: sms_otp mobile: 用户填写的手机号 otp: 用户输入的短信OTP client_id: 提前注册生成的应用Client ID
- WSO2 IS接收到令牌请求后,会校验手机号与OTP是否匹配、OTP是否在有效期内,所有校验通过后,会为该手机号对应的用户账号签发标准Access Token,也可根据配置同步签发Refresh Token、ID Token。
- 移动端后续访问业务接口时,在请求头中携带
Authorization: Bearer <获取到的Access Token>即可完成身份认证。
可调参数说明
你可以直接在WSO2 IS的SMS OTP配置页面调整OTP长度、有效时长、单日发送上限、重试次数等规则,无需修改代码逻辑。
内容的提问来源于stack exchange,提问作者Ismail Anjrini
相关产品推荐
相关产品推荐

