ios - Auth0 Swift SDK .authentication().login 返回无效令牌
问题描述
我最近开始了一个使用 Auth0 的新项目,我在其中将 iOS 应用程序添加到现有的 Web 应用程序项目中。Web 应用程序使用机器来处理 Auth0 应用程序,我们添加了一个 Auth0 原生应用程序来处理 iOS 身份验证。
如果我使用 .webauth() 调用,一切都会按预期工作。webauth 返回一个有效的令牌,并通过断点,我按照代码查看它是否通过了 PKCE 过程。
我想知道的问题是是否可以使用 Swift SDK 和 .authentication().login 来获取有效令牌,以便我可以创建自定义登录页面。设计师的要求是这样的,定制就是我们所需要的。
目前,如果我只使用 .authentication().login 调用它会返回一个无效的令牌。我可以看到这个流程不遵循 PKCE 协议并返回一个令牌,其标头表示它是用 RS256 签名的,而实际上它是用 HS256 签名的。
我看到我可以在哪里通过 RESTful 调用(并使用 webview ......)实现 PKCE 身份验证,但我认为使用提供的 swift SDK 是可能的。任何提示或帮助将不胜感激。
使用 Auth0.Swift 1.2.2、Xcode 10 beta、ios 11、swift 4。
webauth 调用:
Auth0
.webAuth()
.connection("MY-CONNECTION)
.audience("https://myapp.auth0.com/userinfo")
.start { result in
switch result {
case .success(let credentials):
print("credentials: \(credentials)")
case .failure(let error):
print(error)
}
}
身份验证()调用:
Auth0
.authentication()
.login(
usernameOrEmail: "me@mycompany.com",
password: "password",
realm: "MY-CONNECTION",
audience: "https://myapp.auth0.com/userinfo",
scope: "openid")
.start { result in
switch result {
case .success(let credentials):
print("Obtained credentials: \(credentials)")
case .failure(let error):
print("Failed with \(error)")
}
}
谢谢,
本
解决方案
有人向我指出,创建自定义 Auth0 登录基本上违背了 Auth0 试图提供的安全性。它将用户名和密码的处理从 Auth0 手中夺走,并将它们重新交由应用程序的创建者处理。
因此,自定义登录不应该是设计的一部分。尽管它缺乏可定制性,但我将实施 .lock 登录流程,以避免在我的应用程序中使用 Web 登录。
只是想把它放在这里,以防其他人遇到我的情况。
推荐阅读
- node.js - 错误:addReview 不是 MERN 应用程序中的函数
- arrays - 数组字符串中有多少这个词
- sharepoint - SharePoint 配置向导失败 - 无法创建新的 Web 应用程序
- node.js - 如何让我的应用程序无法连接到 Mongo 数据库?
- javascript - 使用 express 和 mongoose,如何使用 POST 路由将多个 ID 的数组从客户端发送到服务器端?
- python - 检查第二个字母是否大写,
- python - 模块“project_name”没有属性“celery”
- java - 解析jar文件中类文件的代码
- javascript - 即使在发送响应时也能在不发送响应错误的情况下解析 API
- json - 如何在 android studio 中使用改造发送 woocomerce 的元数据和计费数据?