【发布时间】:2018-03-15 16:08:17
【问题描述】:
我使用Spark 和pac4j 构建了一个简单的Web 应用程序。它应该使用 WSO2 Identity Server 5.0.0 对用户进行身份验证,使用 OAuth 2“授权代码授予”。
OAuth 流程似乎运行良好,但并不完全:
- 用户被重定向到 WSO2 (
/oauth2/authorize?response_type=code&client_id=foo&redirect_uri=bar&scope=openid&prompt=consent) - 用户使用用户名/密码标识
- 用户同意与我的网络应用程序交换声明
- 我的 Web 应用程序将其接收到的 代码 交换为 访问令牌 和 刷新令牌
然而,最后 pac4j 使用 访问令牌 检索用户配置文件 (/oauth2/userinfo?schema=openid)。这总是给我回应
{"error":"invalid_token","error_description":"Access token validation failed"}
和 WSO2 日志
TID:[0] [IS] [2018-03-14 16:20:30,446] 调试 {org.wso2.carbon.identity.oauth.endpoint.user.OpenIDConnectUserEndpoint} - org.wso2.carbon.identity。 oauth.endpoint.user.UserInfoEndpointException:访问令牌验证失败 {org.wso2.carbon.identity.oauth.endpoint.user.OpenIDConnectUserEndpoint}
访问令牌仍然存在于IDN_OAUTH2_ACCESS_TOKEN 数据库表中:
TIME_CREATED VALIDITY_PERIOD TOKEN_STATE TOKEN_STATE_ID
------------------------------------------------------------------
2018-03-14 10:40:35.940 3600000 ACTIVE NONE
我不明白为什么 WSO2 说我的访问令牌无效。
有人能解释一下吗?
【问题讨论】:
-
尝试在日志中查找原因。查看WSO2 sources,应该有来自 TokenValidationHandler.buildClientAppErrorResponse() 方法的调试消息。
-
WSO2 提供的唯一日志记录已包含在问题中。
标签: oauth-2.0 wso2is spark-java