我有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
我正在使用Spring开发一个服务并在OpenShift上部署它.目前我正在使用Spring Actuator健康终端作为Kubernetes的活跃度和准备度调查.
但是,我将在Actuator健康端点中添加对另一个服务的调用,在我看来,在这种情况下,我需要为我的服务实现新的活动性探测.如果我不这样做,那么第二个服务的失败将导致活动探测失败失败,Kubernetes将在没有任何实际需要的情况下重新启动我的服务.
对于活跃度探测,是否可以实现一些简单的REST控制器,它总是返回HTTP状态200?如果它工作,服务总是可以被认为是活着的?或者有更好的方法吗?
我创建了一个Spring JWT授权应用程序.JWT包含一些自定义声明.在资源服务器端,我想知道,我应该在哪里解析JWT令牌来收集和检查这些声明?我应该在控制器或某个过滤器中执行此操作吗?什么是最佳做法?也许你有一些例子?
我在网上搜索了这个问题的解决方案,但没有找到任何可行的解决方案.我正在尝试设置基本的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
一旦容器成功启动,是否有一种方法可以阻止执行就绪探针?我认为活度探测器应该足以监视容器的健康状况。
我已经部署了两个POD-s,其中hostnetwork设置为true.当POD-s部署在同一个OpenShfit节点上时,一切正常,因为它们可以使用节点IP发现彼此.
当POD-s部署在不同的OpenShift节点上时,他们无法发现彼此,如果我想使用节点IP将一个POD指向另一个POD,我就没有到主机的路由.如何解决这个问题?
我有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以使其无论上下文路径如何都可以工作?
我想设置弹簧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) 我已使用以下图像在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始终使用相同的数据库目录?
我正在使用 Spring Framework 和 Spring Data,我需要在处理完成时锁定数据库表中的特定行,因此在处理完成之前没有其他人可以访问数据并更改它。同时,我正在运行同一应用程序的多个实例。
是否会PESSIMISTIC_WRITE以这样一种方式锁定数据库中的特定行,当一个应用程序实例访问该行时,同一应用程序的其他实例将无法访问该行,这些实例可能同时尝试从数据库访问同一行时间?
有一个问题讨论了锁类型PESSIMISTIC_READ与PESSIMISTIC_WRITE. 需要明确的是,我不是在问它们之间的区别,我是在问的范围PESSIMISTIC_WRITE以及从一个应用程序实例获取该锁将如何影响其他可能尝试读取和更新同一行的应用程序实例数据库表。
我已经在集群中安装并运行了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)
如何配置它才能正常工作?
我公司有自己的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) 我已经使用Kubeadm工具安装了Kubernetes,然后按照文档安装了Web UI(仪表板).Kubernetes在一个节点实例中安装并运行,该节点实例是一个污点主节点.
但是,我无法访问Web UI https://<kubernetes-master>/ui.相反,我可以访问它https://<kubernetes-master>:6443/ui.
我怎么能解决这个问题?
spring ×7
java ×5
kubernetes ×4
openshift ×4
spring-boot ×3
docker ×2
oauth-2.0 ×2
certificate ×1
hibernate ×1
infinispan ×1
jpa ×1
jwt ×1
kube-dns ×1
kubectl ×1
rabbitmq ×1
redhat ×1
spring-cache ×1
spring-data ×1
spring-mvc ×1
ssl ×1
tcp ×1