我正在寻找有关我的端点对 Ionic 自定义身份验证所需的更详细的描述。离子自定义身份验证。如果可能,请遵循示例项目或教程。然而,我已经广泛地研究了,要么我的谷歌搜索技能已经死了,要么那里没有更多的东西(从我所看到的)。
我已经使用"基本"设置对此进行了测试,但需要通过 ionic 与我自己的端点连接。如下所示:
Ionic.Auth.login('custom', options, details).then(function (success) {
console.log('Ionic Login Success:');
console.log(success);
}, function (failure) {
console.error('Ionic Login Failure: ' + failure.response.body.error.message);
});
一些背景:我有一个 Ionic Cordova 应用程序,它可以连接/验证我的 WCF Web API(通过对登录/身份验证过程进行一些黑客攻击),然后检索登录用户的数据。我需要将其转换为离子身份验证。我没有使用JWT的经验,并且已经在我的WCF服务上安装了System.IdentityModel.Tokens.JWT包。
任何信息不胜感激。提前感谢!
我知道这个问题缺少一些细节,但在我知道更多之前我不能提供更多
Ionic 团队添加了三个示例项目来演示自定义身份验证后端。这三个是快递,烧瓶和果朗。我设法通过查看后端的服务器部分为 CakePHP 2.6.x 设置了一个后端。
你应该能够把一些东西放在一起,因为它不是魔法。我添加了一些PHP截图,它们应该向您展示如何用您的特定语言制作它:
- 从 url 获取
redirect_uri
参数并保存 - 从 url 获取
state
参数并保存 - 从 url 获取
token
参数并保存 - 将共享密钥保存到变量中
- 使用 HS256 算法解码 JWT 令牌
解码令牌的结构应如下所示:
"decoded_array": {
"data": {
"password": "someString",
"email": "some@email.com"
},
"exp": 1457731231,
"app_id": "your app id"
}
- 现在检查您的数据库中是否有用户(执行身份验证)
- 如果身份验证不成功,则返回未经授权的异常 (401)
如果身份验证成功,请创建一个名为
payload
的新变量。这应该包含数据库中的user_id
:$payload = array('user_id' => $user['User']['id']);
现在,通过创建新的 JWT 令牌,使用
sharedSecret
字符串对有效负载进行编码:
$outgoingToken = JWT::encode($payload, $sharedSecret);
重定向回离子:
$url = $redirectUri ."&令牌=" .$outgoingToken ."&状态=" 。$state .'&redirect_uri=https://api.ionic.io/auth/integrations/custom/success';$this->重定向($url);
看看这个Github项目:https://github.com/driftyco/custom-auth-examples
你也可以在这里查看我的PHP实现:https://www.doonot.com/custom-auth-backend-for-ionic-auth-using-cakephp/