我一直在玩球衣的OAuth2.0客户端支持库。它也像魅力一样。但是我似乎无法找到一种方法来指定在授权请求中发送的state
参数。 Jersey为我生成一个随机UUID,让我在获得授权提供者的响应时检索它。在此之前,我提出的唯一选择是手动解析start()返回的URI字符串。但这不应该是对的,对吧?要么我错过了球衣中的东西,要么我错过了状态参数的要点......
那么你知道在我开始()流之后提取状态参数的任何方法(比我更优雅)吗?或者将我自己的状态变量放在flowBuilder中的方法?
顺便说一句,我正在使用运动衫2.5.1。
编辑以包含代码示例:
final ClientIdentifier clientIdentifier = new ClientIdentifier(CLIENT_ID, CLIENT_SECRET);
final OAuth2CodeGrantFlow codeGrantFlow = OAuth2ClientSupport
.googleFlowBuilder(clientIdentifier, redirectURI, scope)
.prompt(OAuth2FlowGoogleBuilder.Prompt.CONSENT).build();
final String googleAuthURI = codeGrantFlow.start();
如何在那里的某个地方获取/设置状态?
Edit2:以下是泽西岛JIRA https://java.net/jira/browse/JERSEY-2342的功能请求 与此同时,Michal Gajdos的建议对我来说很好。
答案 0 :(得分:2)
您可以使用OAuth2CodeGrantFlow.Builder#property(...)方法设置state
参数:
final OAuth2CodeGrantFlow codeGrantFlow = OAuth2ClientSupport
.googleFlowBuilder(clientIdentifier, redirectURI, scope)
.prompt(OAuth2FlowGoogleBuilder.Prompt.CONSENT)
.property(OAuth2CodeGrantFlow.Phase.AUTHORIZATION, OAuth2Parameters.STATE, state)
.build();
我同意,这不太方便。如果您有合法的用例来修改构建器/流程,请随时向我们的JIRA提交改进。