您好我已在此论坛发布此问题。 我也在这里发布,以便有更多回应的机会
http://forum.spring.io/forum/spring-projects/security/oauth/745627-response-of-oauth2
我需要在Oauth身份验证2的json响应中添加信息。现在我的配置返回如下响应:
{"access_token":"523dd467-e5c0-407b-95e4-ea60a403d772",
"token_type":"bearer",
"refresh_token ":"e3378c95-1ebf-419b-bf45-e734d8e94aba",
"expires_in":43199}
但我希望拥有的是如下:
{"access_token":"523dd467-e5c0-407b-95e4-ea60a403d772",
"token_type":"bearer",
"refresh_token ":"e3378c95-1ebf-419b-bf45-e734d8e94aba",
"expires_in":43199, "other":"value"}
这是否可以轻松实现?
其他问题是: 如果我想改变expireTime,我应该实现TokenStore接口是正确的吗? 有没有关于它的文件?
最后一个问题是: 是否有一种简单的方法可以使用json格式的凭据(用户名和密码)进行Oauth2身份验证?
答案 0 :(得分:6)
坦克的黑马。
我只找到了如何在响应中添加其他信息。 Json格式不在他的时代(目前不是一个高优先级)。我的解决方案如下:
实现TokenEnhancer并向tokenService配置添加属性:
示例:
<bean id="tokenServices" class="org.springframework.security.oauth2.provider.token.DefaultTokenServices"> <property name="tokenStore" ref="tokenStore" /> <property name="supportRefreshToken" value="true" /> <property name="clientDetailsService" ref="clientDetailsService" /> <property name="tokenEnhancer" ref="tokenEnhancer"/> </bean>
和实施:
public class MyTokenEnhancer implements TokenEnhancer {
private List<TokenEnhancer> delegates = Collections.emptyList();
public void setTokenEnhancers(List<TokenEnhancer> delegates) {
this.delegates = delegates;
}
@Override
public OAuth2AccessToken enhance(OAuth2AccessToken accessToken, OAuth2Authentication authentication) {
DefaultOAuth2AccessToken tempResult = (DefaultOAuth2AccessToken) accessToken;
final Map<String, Object> additionalInformation = new HashMap<String, Object>();
final String infoValue = "This is my value";
additionalInformation.put("myInfo", infoValue);
tempResult.setAdditionalInformation(additionalInformation);
OAuth2AccessToken result = tempResult;
for (TokenEnhancer enhancer : delegates) {
result = enhancer.enhance(result, authentication);
}
return result;
}
}
如果您找到了一个更好/更优雅的解决方案......我愿意接受建议
答案 1 :(得分:-1)
<bean id="tokenServices" class="org.springframework.security.oauth2.provider.token.DefaultTokenServices">
<property name="accessTokenValiditySeconds" value="300000"></property>
<bean/>
使用此功能可以控制到期时间(以秒为单位的值)
我也想自定义响应并需要json格式,就像你上一个问题一样..你遇到过任何解决方案..?