Auth0 Swift SDK .authentication().login 返回无效令牌
Posted
技术标签:
【中文标题】Auth0 Swift SDK .authentication().login 返回无效令牌【英文标题】:Auth0 Swift SDK .authentication().login returning invalid token 【发布时间】:2019-02-15 06:06:53 【问题描述】:我最近开始了一个使用 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)
authentication() 调用:
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)")
谢谢,
本
【问题讨论】:
【参考方案1】:有人向我指出,创建自定义 Auth0 登录基本上违背了 Auth0 试图提供的安全性。它将用户名和密码的处理从 Auth0 手中夺走,并将它们重新交由应用程序的创建者处理。
因此,自定义登录不应该是设计的一部分。尽管它缺乏可定制性,但我将实施 .lock 登录流程以避免在我的应用中使用 Web 登录。
只是想把这个放在这里,以防其他人遇到我的情况。
【讨论】:
这不是问题的答案 是的。不可自定义,请使用 Lock。以上是关于Auth0 Swift SDK .authentication().login 返回无效令牌的主要内容,如果未能解决你的问题,请参考以下文章
ClassNotFoundException: com.auth0.jwt.exceptions.JWTCreationException 与 DocuSignApi Java SDK
Swift Auth0 访问代码导致未经授权的访问,但 Auth0 日志中没有任何内容