首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在中使用“如何:用JPA实现核心服务”来设置clientSettings和tokenSettings

如何在中使用“如何:用JPA实现核心服务”来设置clientSettings和tokenSettings
EN

Stack Overflow用户
提问于 2022-09-14 01:45:49
回答 1查看 192关注 0票数 0

使用本指南如何:使用JPA实现核心服务

代码语言:javascript
复制
// Client entity
  @Column(length = 2000)
  private String clientSettings;
  @Column(length = 2000)
  private String tokenSettings;

创建客户端时,我不知道如何设置clientSettingstokenSettings,所以我只需复制数据库字符串

代码语言:javascript
复制
    Client client = new Client();
    client.setId(UUID.randomUUID().toString());
    client.setClientIdIssuedAt(Instant.now());
    client.setClientName("TTT");
    client.setClientId("form-client");
    client.setClientSecret("{noop}secret");
    client.setRedirectUris(
        "http://127.0.0.1:4001/login/oauth2/code/felord-oidc,http://127.0.0.1:4001/authorized,http://127.0.0.1:4001/foo/bar,http://127.0.0.1:3001/api/auth/pinecone,https://spruce.jiahang.online/oauth_hcms,http://127.0.0.1:4001/foo/bart,http://36.135.4.69:4000/oauth_hcms,http://36.135.4.216:4000/oauth_hcms,http://localhost:3000/oauth_hcms,http://127.0.0.1:3000/oauth_hcms");
    client
        .setClientAuthenticationMethods(ClientAuthenticationMethod.CLIENT_SECRET_BASIC.getValue());
    client.setAuthorizationGrantTypes(AuthorizationGrantType.AUTHORIZATION_CODE.getValue() + ","
        + AuthorizationGrantType.REFRESH_TOKEN.getValue());
    client.setScopes("openid,userinfo.read");

    String clientSettingString =
        "{\"@class\":\"java.util.Collections$UnmodifiableMap\",\"settings.client.require-proof-key\":false,\"settings.client.require-authorization-consent\":true}";
    String tokenSettingString =
        "{\"@class\":\"java.util.Collections$UnmodifiableMap\",\"settings.token.reuse-refresh-tokens\":true,\"settings.token.id-token-signature-algorithm\":[\"org.springframework.security.oauth2.jose.jws.SignatureAlgorithm\",\"RS256\"],\"settings.token.access-token-time-to-live\":[\"java.time.Duration\",300.000000000],\"settings.token.refresh-token-time-to-live\":[\"java.time.Duration\",3600.000000000]}";

    client.setClientSettings(clientSettingString);
    client.setTokenSettings(tokenSettingString);

    clientRepo.save(client);

有任何方法可以像下面这样设置clientSettingstokenSettings吗?

代码语言:javascript
复制
.tokenSettings(TokenSettings.builder().build())
.clientSettings(ClientSettings.builder().requireAuthorizationConsent(true).build())
EN

回答 1

Stack Overflow用户

发布于 2022-09-23 19:47:28

保存RegisteredClient将与以前一样通过相同的RegisteredClientRepository接口。因此,给出了“如何指导”中的RegisteredClientRepository

代码语言:javascript
复制
RegisteredClient registeredClient =
        RegisteredClient.withId(UUID.randomUUID().toString())
                .clientId("messaging-client")
                .clientSecret("{noop}secret")
                .clientAuthenticationMethod(ClientAuthenticationMethod.CLIENT_SECRET_BASIC)
                .authorizationGrantType(AuthorizationGrantType.AUTHORIZATION_CODE)
                .authorizationGrantType(AuthorizationGrantType.REFRESH_TOKEN)
                .authorizationGrantType(AuthorizationGrantType.CLIENT_CREDENTIALS)
                .redirectUri("http://127.0.0.1:8080/login/oauth2/code/messaging-client-oidc")
                .redirectUri("http://127.0.0.1:8080/authorized")
                .scope(OidcScopes.OPENID)
                .scope(OidcScopes.PROFILE)
                .scope("message.read")
                .scope("message.write")
                .tokenSettings(TokenSettings.builder().build())
                .clientSettings(ClientSettings.builder().requireAuthorizationConsent(true).build())
                .build();

registeredClientRepository.save(registeredClient);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73710616

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档