小编dpl*_*esa的帖子

向Spring OAuth2 Auth Server添加多个客户端

我有Spring OAuth授权服务器,我想添加对多个客户端(id)的支持.我为这样的客户配置了:

clients
            .inMemory().withClient(client).secret(clientSecret)
            .resourceIds(resourceId)
            .authorizedGrantTypes("client_credentials", "password", "refresh_token", "implicit", "authorization_code")
            .authorities("ROLE_USER")
            .scopes("read", "write")
            .autoApprove(true)
            .and()
            .inMemory().withClient("acme").secret("acmesecret")
            .resourceIds(resourceId)
            .authorizedGrantTypes("client_credentials", "password", "refresh_token", "implicit", "authorization_code")
            .authorities("ROLE_USER_ACME")
            .scopes("read", "write")
            .autoApprove(true); 
Run Code Online (Sandbox Code Playgroud)

我可以使用第一个客户端获取访问令牌,但在尝试使用第二个客户端获取访问令牌时出现此错误:

{
  "timestamp": 1456822249638,
  "status": 401,
  "error": "Unauthorized",
  "message": "Bad credentials",
  "path": "/oauth/token"
}
Run Code Online (Sandbox Code Playgroud)

是否可以添加多个客户端以及如何执行此操作?另外,如何从数据库中读取客户端?

java spring spring-security oauth-2.0 spring-security-oauth2

16
推荐指数
1
解决办法
5577
查看次数

Kubernetes - 活力和准备情况调查实施

我正在使用Spring开发一个服务并在OpenShift上部署它.目前我正在使用Spring Actuator健康终端作为Kubernetes的活跃度和准备度调查.

但是,我将在Actuator健康端点中添加对另一个服务的调用,在我看来,在这种情况下,我需要为我的服务实现新的活动性探测.如果我不这样做,那么第二个服务的失败将导致活动探测失败失败,Kubernetes将在没有任何实际需要的情况下重新启动我的服务.

对于活跃度探测,是否可以实现一些简单的REST控制器,它总是返回HTTP状态200?如果它工作,服务总是可以被认为是活着的?或者有更好的方法吗?

spring openshift kubernetes

10
推荐指数
1
解决办法
8505
查看次数

Spring Framework - 在哪里解析JWT以获取自定义声明?

我创建了一个Spring JWT授权应用程序.JWT包含一些自定义声明.在资源服务器端,我想知道,我应该在哪里解析JWT令牌来收集和检查这些声明?我应该在控制器或某个过滤器中执行此操作吗?什么是最佳做法?也许你有一些例子?

spring spring-security jwt spring-security-oauth2

9
推荐指数
1
解决办法
6938
查看次数

Spring Boot OAuth2 - 无法从令牌获取用户详细信息

我在网上搜索了这个问题的解决方案,但没有找到任何可行的解决方案.我正在尝试设置基本的Spring Boot OAuth2授权提供程序和客户端.

我遵循官方的Spring Boot说明,并在Facebook和Github上创建了单点登录.然后我按照说明创建了Secure Spring Boot Web应用程序.

我想创建自己的授权服务器,所以我说@EnableAuthorizationServer注释到安全Web应用程序作为解释在这里.我还添加了一个OAuth2客户端的详细信息,如链接中所述.我按照进一步说明创建了OAuth2客户端.

我启动这两个应用程序,访问127.0.0.1:9999打开客户端,客户端将我重定向到localhost:8080/login,我输入用户详细信息,身份验证提供程序将我重定向到127.0.0.1:9999/login,我收到一条错误消息:

身份验证失败:无法从令牌获取用户详细信息

这是记录的内容:

INFO 2800 --- [nio-9999-exec-3] osbasorUserInfoTokenServices:获取用户信息:http:// localhost:8080/me

DEBUG 2800 --- [nio-9999-exec-3] ossoauth2.client.OAuth2RestTemplate:为http:// localhost:8080/me创建了GET请求

DEBUG 2800 --- [nio-9999-exec-3] ossoauth2.client.OAuth2RestTemplate:设置请求接受标题为[application/json,application/*+ json]

DEBUG 2800 --- [nio-9999-exec-3] ossoauth2.client.OAuth2RestTemplate:对http:// localhost:8080/me的GET请求导致200(OK)

INFO 2800 --- [nio-9999-exec-3] osbasorUserInfoTokenServices:无法获取用户详细信息:class org.springframework.web.client.RestClientException,无法提取响应:没有为响应类型找到合适的HttpMessageConverter [interface java.util .Map]和内容类型[text/html; charset = UTF-8]]

这是我的客户端应用程序:

@EnableAutoConfiguration
@Configuration
@EnableOAuth2Sso
@RestController
public class ClientApplication {

    @RequestMapping("/")
    public String home(Principal user) {
        return "Hello " + user.getName();
    }

    public static void main(String[] args) {
        SpringApplication.run(ClientApplication.class, args);
    } …
Run Code Online (Sandbox Code Playgroud)

spring spring-security oauth-2.0 spring-boot spring-security-oauth2

7
推荐指数
1
解决办法
1万
查看次数

Kubernetes-容器启动后执行Readiness Probe

一旦容器成功启动,是否有一种方法可以阻止执行就绪探针?我认为活度探测器应该足以监视容器的健康状况。

openshift docker kubernetes

5
推荐指数
1
解决办法
488
查看次数

OpenShift和hostnetwork = true

我已经部署了两个POD-s,其中hostnetwork设置为true.当POD-s部署在同一个OpenShfit节点上时,一切正常,因为它们可以使用节点IP发现彼此.

当POD-s部署在不同的OpenShift节点上时,他们无法发现彼此,如果我想使用节点IP将一个POD指向另一个POD,我就没有到主机的路由.如何解决这个问题?

redhat openshift kubernetes

5
推荐指数
1
解决办法
1123
查看次数

Spring Webjars定位器和上下文路径

我有Spring Boot应用程序,启用了Spring Security,配置如下:

    @Override
    protected void configure(HttpSecurity http) throws Exception {
        http
            .authorizeRequests()
                .antMatchers("/", "/home", "/webjars/**", "/css/**").permitAll()
                .anyRequest().authenticated()
                .and()
            .formLogin()
                .loginPage("/login")
                .permitAll()
                .and()
            .logout()
                .permitAll();
    }
Run Code Online (Sandbox Code Playgroud)

一切正常,直到我改变上下文路径.例如,如果我将它设置为:

server:
   context-path: /myapp
Run Code Online (Sandbox Code Playgroud)

我无法访问我的webjars,css ......他们仍然看着:http:// localhost:8080/webjars / ...

如何配置Spring Webjars以使其无论上下文路径如何都可以工作?

java spring spring-mvc spring-security spring-boot

4
推荐指数
1
解决办法
3027
查看次数

Spring集成TCP

我想设置弹簧TCP服务器,客户端应用程序。我需要为收到的邮件服务器侦听的端口,例如,6666和客户端不同的端口上发送消息,例如7777我都跟着文档,但是我坚持的问题,即客户期望接收到响应,但实际上,另一端只会接收来自客户端的消息,并且不会发送任何响应。所以,基本上,我不断收到此错误:

o.s.i.ip.tcp.TcpOutboundGateway          : Tcp Gateway exception

org.springframework.integration.MessageTimeoutException: Timed out waiting for response
Run Code Online (Sandbox Code Playgroud)

我发现这个答案类似的问题,所以我想答案在我的代码整合。这是我的Config类:

@EnableIntegration
@IntegrationComponentScan
@Configuration
public class Config {

private int port = 6666;

@MessagingGateway(defaultRequestChannel = "toTcp")
public interface Gateway {
    String viaTcp(String in);
}

@Bean
@ServiceActivator(inputChannel = "toTcp")
public TcpOutboundGateway tcpOutGate(AbstractClientConnectionFactory connectionFactory) {
    TcpOutboundGateway gate = new TcpOutboundGateway();
    gate.setConnectionFactory(connectionFactory);
    gate.setOutputChannelName("resultToString");
    gate.setRequiresReply(false);

   return gate;
}

@Bean
public TcpInboundGateway tcpInGate(AbstractServerConnectionFactory connectionFactory) {
    TcpInboundGateway inGate = new TcpInboundGateway();
    inGate.setConnectionFactory(connectionFactory);
    inGate.setRequestChannel(fromTcp());

    return inGate;
}

@Bean
public ByteArrayRawSerializer serializer() …
Run Code Online (Sandbox Code Playgroud)

java spring tcp spring-integration

4
推荐指数
1
解决办法
1469
查看次数

如何在Openshift上正确设置RabbitMQ

我已使用以下图像在OpenShift上创建了新应用:https : //hub.docker.com/r/luiscoms/openshift-rabbitmq/

它运行成功,我可以使用它。我已经添加了一个永久卷。但是,每次重新启动POD时,我都会丢失所有数据。这是因为RabbitMq使用主机名来创建数据库目录。

例如:

node           : rabbit@openshift-rabbitmq-11-9b6p7
home dir       : /var/lib/rabbitmq
config file(s) : /etc/rabbitmq/rabbitmq.config
cookie hash    : BsUC9W6z5M26164xPxUTkA==
log            : tty
sasl log       : tty
database dir   : /var/lib/rabbitmq/mnesia/rabbit@openshift-rabbitmq-11-9b6p7
Run Code Online (Sandbox Code Playgroud)

如何设置RabbitMq始终使用相同的数据库目录?

rabbitmq openshift

4
推荐指数
1
解决办法
5242
查看次数

具有多个实例的应用程序上的 JPA PESSIMISTIC_WRITE

我正在使用 Spring Framework 和 Spring Data,我需要在处理完成时锁定数据库表中的特定行,因此在处理完成之前没有其他人可以访问数据并更改它。同时,我正在运行同一应用程序的多个实例。

是否会PESSIMISTIC_WRITE以这样一种方式锁定数据库中的特定行,当一个应用程序实例访问该行时,同一应用程序的其他实例将无法访问该行,这些实例可能同时尝试从数据库访问同一行时间?

有一个问题讨论了锁类型PESSIMISTIC_READPESSIMISTIC_WRITE. 需要明确的是,我不是在问它们之间的区别,我是在问的范围PESSIMISTIC_WRITE以及从一个应用程序实例获取该锁将如何影响其他可能尝试读取和更新同一行的应用程序实例数据库表。

hibernate jpa spring-data spring-data-jpa

4
推荐指数
1
解决办法
628
查看次数

JBoss上的Spring Boot和Infinspan缓存

我已经在集群中安装并运行了JBoss 7。我正在开发一个Spring Boot 1.3.2应用程序。我在domain.xml中定义了以下Infinispan缓存:

           <cache-container name="my-cache" default-cache="auth">
                <transport stack="tcp" lock-timeout="10000"/>
                <replicated-cache name="auth" mode="SYNC" batching="true">
                    <locking isolation="REPEATABLE_READ"/>
                    <transaction mode="NONE"/>
                    <eviction strategy="LRU" max-entries="100"/>
                    <expiration max-idle="300000"/>
                </replicated-cache>
            </cache-container>
Run Code Online (Sandbox Code Playgroud)

在application.properties文件中,我定义了以下内容:

spring.cache.type=infinispan
Run Code Online (Sandbox Code Playgroud)

然后在我的缓存类中定义:

@CacheConfig(cacheNames="java:jboss/infinispan/cache/my-cache/auth")
Run Code Online (Sandbox Code Playgroud)

当我尝试在JBoss上部署应用程序时,出现以下错误:

Caused by: java.lang.IllegalArgumentException: No cache manager could be auto-configured, check your configuration (caching type is 'INFINISPAN'
Run Code Online (Sandbox Code Playgroud)

如何配置它才能正常工作?

java spring infinispan spring-boot spring-cache

2
推荐指数
1
解决办法
1177
查看次数

在 Java cacerts 中导入根证书和中间证书的正确方法

我公司有自己的ROOT证书。他们使用这个证书签署了intermediate证书。

然后我们发布server证书的CSR并用intermediate证书签名。

什么是导入正确的方式ROOT证书,并intermediate在Java中cacerts文件,以便能够建立与已在服务器SSL连接server证书由签署intermediate

我使用 OpenSSL 来测试服务器上的证书链:

openssl s_client -showcerts -connect host:443

CONNECTED(00000003)
depth=0 C = COUNTRYCODE, ST = myCountry, O = myOrganization, CN = myServer, emailAddress = myMail
verify error:num=20:unable to get local issuer certificate
verify return:1
depth=0 C = COUNTRYCODE, ST = myCountry, O = myOrganization, CN = myServer, emailAddress = myMail
verify error:num=27:certificate not trusted
verify return:1
depth=0 C = COUNTRYCODE, ST …
Run Code Online (Sandbox Code Playgroud)

java ssl certificate ssl-certificate x509certificate

2
推荐指数
1
解决办法
1万
查看次数

访问Kubernetes Web UI(仪表板)

我已经使用Kubeadm工具安装了Kubernetes,然后按照文档安装了Web UI(仪表板).Kubernetes在一个节点实例中安装并运行,该节点实例是一个污点主节点.

但是,我无法访问Web UI https://<kubernetes-master>/ui.相反,我可以访问它https://<kubernetes-master>:6443/ui.

我怎么能解决这个问题?

docker kubernetes microservices kube-dns kubectl

1
推荐指数
1
解决办法
2736
查看次数