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 日志中没有任何内容

使用 Auth0.swift WebAuth0 设置初始屏幕

Auth0-如何与 Flutter 一起使用

检查 Auth0 idToken 是不是已过期

如何使用新的 auth0-spa.js 在不单击登录按钮的情况下重定向到 auth0?