如何在Spring Security OAuth2中分离访问 token 并刷新 token 端点 - java

在Spring Security oauth2中,获取访问令牌和刷新令牌使用相同的端点“ / oauth / token”,并由参数grant_type“代码”或“ refresh_token”识别。

        if (isAuthCodeRequest(parameters)) {
            // The scope was requested or determined during the authorization step
            if (!tokenRequest.getScope().isEmpty()) {
                logger.debug("Clearing scope of incoming token request");
                tokenRequest.setScope(Collections.<String> emptySet());
            }
        }

        if (isRefreshTokenRequest(parameters)) {
            // A refresh token has its own default scopes, so we should ignore any added by the factory here.
            tokenRequest.setScope(OAuth2Utils.parseParameterList(parameters.get(OAuth2Utils.SCOPE)));
        }

但是我想将此终结点一分为二,例如“ oauth / access_token”用于获取访问令牌,而“ oauth / refresh_token”用于刷新访问令牌。我该怎么做 ?

我尝试编写我的自定义终结点类,并注册Bean来覆盖默认的TokenEndpoint,但似乎效果不佳。

参考方案

您可以为访问令牌和刷新令牌创建两个rest控制器方法,并使用rest模板在相关控制器方法内对oauth / token端点进行标准调用。

@RestController
public class TokenController {

    @RequestMapping("oauth/access_token")
    public TokenResponse getAccessToken() {
        //use rest template or httpclient to call to oauth/token and return converted TokenResponse
    }

    @RequestMapping("oauth/refresh_token")
    public TokenResponse getRefreshToken() {
        //use rest template or httpclient to call to oauth/token and return converted TokenResponse
    }
}

使用Keycloak获取id_token - java

谁知道如何使用Keycloak获取id_token?我一直在Keycloak(Spring,JEE)和邮递员中使用Java。基础工作正常,但我需要id_token,因为有些说法称它们不在access_token中,但存在于id_token中。使用keycloak-core库,我可以获得Keycloak上下文,但是id_token属性始终为null。有想法吗 …

token “{”上的语法错误,此 token 后应使用SwitchLabels - java

我想从微调器类中选择选项时打开新表格我尝试这个但是我有语法错误 令牌“{”的语法错误, 在此之后预期使用SwitchLabel 代币public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.tf);…

如何在Spring-Rest中将路径变量映射到实体 - java

我在Spring-RS中获得了一些REST端点,该端点使用实体ID作为路径变量。大多数情况下,方法要做的第一件事是使用id检索实体。有没有一种方法可以自动将id映射到实体,仅将实体作为方法参数?现在的情况 :@RequestMapping(path="/{entityId}) public void method(@PathVariable Str…

解析字符串以删除空格java - java

我需要一些帮助来解析输入到字符串的字符串,该字符串随后将被清理和输出。例如String str = " tHis strIng is rEalLy mEssy " 我需要做的是将其解析为如下所示:"ThisStringIsReallyMessy" 因此我基本上需要清理它,然后仅将每个单词的第一个字母设置为大写,以防有人…

Java等同于SecureString - java

我正在寻找Java等效于.NET的SecureString.aspx。 2018年有这样的实施方案吗?OWASP implementation并不完全相同,因为它只是一个纯字符数组。 .NET等效项提供了additional features,例如从非托管内存中获取实例的能力以及加密功能。我知道常见的Java模式,它会以char[]的形式传递密码,并在使用后…