【发布时间】:2020-12-12 16:31:56
【问题描述】:
我有一个使用 Auth0 JWT 身份验证的 Spring Boot 后端 API,目前有两个客户端,一个 Vue SPA 和一个 Android 应用程序。 Vue SPA 工作正常。它在 Auth0 中使用 SPA Application 类型,身份验证机制使用 Audience,如下所示:
{
"domain": "mycompany.auth0.com",
"clientId": "mySPAclientID",
"audience": "https://myaudience.mycompany.com"
}
我想我可以在 Android 中做类似的事情,所以我在我的 Auth0 仪表板中创建了一个原生应用程序类型,下载了相应的快速入门,并尝试进行身份验证。当然,我能够针对 Auth0 进行身份验证并取回 JWT,但是 JWT 不适用于我的 Spring Boot API,该 API 由我的 https://myaudience.mycompany.com 受众指定,并且我的 Spring Boot 安全配置预计会出现在其中智威汤逊。我的第一个想法是我可以简单地将受众添加到 Android 应用中的登录操作:
WebAuthProvider.login(auth0)
.withScheme("demo")
.withAudience(String.format("https://%s/userinfo", getString(R.string.com_auth0_domain)))
.withAudience("https://myaudience.mycompany.com") // added this
.start(this, new AuthCallback() { ... }
但这不起作用。当我解析返回的 JWT 时,观众部分不包含预期的块。它应该是这样的:
"aud": [
"https://myaudience.mycompany.com",
"https://mycompany.auth0.com/userinfo"
]
但它看起来像这样:
"aud": "myNativeClientID"
它也完全缺少范围元素。使这项工作的正确方法是什么?我需要一个新的 Auth0 API,这需要一个新的 Spring Boot 安全机制吗?还是登录请求中缺少一些简单的东西?或者我的 Auth0 本机应用程序中缺少一些配置?我已经阅读了所有相关文档,但没有任何效果。我不知道如何继续,任何帮助将不胜感激。
【问题讨论】:
标签: android spring-boot auth0