我正在尝试让auth0与quarkus一起工作:
我使用过的资源是:
https://github . com/quarkusio/quarkus-quick starts/tree/main/security-oauth 2-quick start
https://quarkus.io/guides/security-oauth2
当我转到我的/auth/login页面时,我重定向到我的Auth0租户进行登录,它会正确地将我重定向回我的登录页面。
包含相关信息的示例 URL:
https://tenant.us.auth0.com/authorize?response_type=code
然后我登陆着陆页,网址中有一个令牌:
? code=AT3rTCtZ_PixmX0l
然后我转到运行我从快速入门(上面)“许可所有”中获得的示例代码的url
这是我的结果:hello anonymous,isSecure:true,authScheme:null
设置:
quarkus.oauth2.client-id=xxxxx
quarkus.oauth2.client-secret=xxxxx
quarkus.oauth2.introspection-url=https://tenant.us.auth0.com/intropect
代码:
@Path("/secured")
public class TokenSecuredResource {
private static final Logger LOG = Logger.getLogger(TokenSecuredResource.class);
@GET
@Path("permit-all")
@Produces(MediaType.TEXT_PLAIN)
@PermitAll
public String hello(@Context SecurityContext ctx) {
Principal caller = ctx.getUserPrincipal();
String name = caller == null ? "anonymous" : caller.getName();
String helloReply = String.format("hello + %s, isSecure: %s, authScheme: %s", name, ctx.isSecure(),
ctx.getAuthenticationScheme());
return helloReply;
}
@GET()
@Path("roles-allowed")
@RolesAllowed({ "hsp" })
@Produces(MediaType.TEXT_PLAIN)
public String helloRolesAllowed(@Context SecurityContext ctx) {
LOG.info(ctx);
Principal caller = ctx.getUserPrincipal();
LOG.info(caller);
String name = caller == null ? "anonymous" : caller.getName();
String helloReply = String.format("hello + %s, isSecure: %s, authScheme: %s", name, ctx.isSecure(),
ctx.getAuthenticationScheme());
return helloReply;
}
}
主要问题:我看不到适当的安全上下文信息的原因是什么?
后续问题:
不幸的是,auth0当前不支持带有内省endpoint的不透明令牌验证。
具有侦测endpoint的不透明令牌验证
所以我认为在这种情况下,问题是给QUKUS的自省URL不起作用。