小编amd*_*dev的帖子

Spring Security AuthenticationCredentialsNotFoundException,SecurityContextHolder.getContext为null

我有一个奇怪的错误,几个小时的调试,我无法理解.

更新1:我使用在Tomcat 7上运行的Spring Security 4.0.3.

问题接近这个问题,也许SecurityContextHolder是在这期间失去了response.redirect()但答案没有帮助.

问题似乎也接近这个问题,但答案对我来说没有意义.

这是我的配置:

@Configuration
@EnableWebSecurity
@EnableGlobalMethodSecurity(securedEnabled = true)
public class ProjectSecurityConfiguration extends WebSecurityConfigurerAdapter {
    @Override
    protected void configure(HttpSecurity http) throws Exception {
        http.csrf().disable();
        http.authorizeRequests().antMatchers("/login").anonymous();
    }

    @Override
    protected void configure(AuthenticationManagerBuilder auth) throws Exception {
        auth.inMemoryAuthentication().withUser(Constants.PROFIL_ADMIN).password(Constants.PROFIL_ADMIN).
            roles("ADMIN","TEST_SERVICE");
    }
}
Run Code Online (Sandbox Code Playgroud)

登录后,我尝试获取安全的URL:

@RequestMapping(value = "/myurl", method = RequestMethod.GET)
@ResponseBody
public boolean getTestService(HttpServletRequest request)
        throws SQLException, PoRulesException {

    System.out.println("get security context");
    System.out.println("--------------------");
    SecurityContext secuContext = (SecurityContext) request.getSession().getAttribute("SPRING_SECURITY_CONTEXT");
    System.out.println(secuContext);
    System.out.println("get security context …
Run Code Online (Sandbox Code Playgroud)

java spring spring-security

11
推荐指数
2
解决办法
7875
查看次数

sourceTree(git)中命令行的公钥问题

我通常在linux上使用git,而我对Windows(c#项目)上的sourceTree并不熟悉,该界面对于跟随树很有用,但是我想使用commande行。

我真的不明白,我用sourceTree代理生成了ssh密钥,并用“ Pageant”加载了,我在我的bitbucket帐户上添加了公共密钥。

而且有效。我可以从sourceTree界面克隆/拉/推

使用sourceTree的界面获取

但是使用sourceTree命令行模式不起作用

命令行不起作用

windows git bitbucket atlassian-sourcetree

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

如何获取 UnexpectedRollbackException 的 SQL 错误来源

我的服务“duplicateContract”上有休眠回滚异常

Caused by: org.springframework.transaction.UnexpectedRollbackException: JTA transaction unexpectedly rolled back (maybe due to a timeout); nested exception is javax.transaction.RollbackException
    at org.springframework.transaction.jta.JtaTransactionManager.doCommit(JtaTransactionManager.java:1031)
    at org.springframework.transaction.support.AbstractPlatformTransactionManager.processCommit(AbstractPlatformTransactionManager.java:732)
    at org.springframework.transaction.support.AbstractPlatformTransactionManager.commit(AbstractPlatformTransactionManager.java:701)
    at org.springframework.transaction.interceptor.TransactionAspectSupport.commitTransactionAfterReturning(TransactionAspectSupport.java:321)
    at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:116)
    at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171)
    at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:204)
    at $Proxy128.duplicateContracts(Unknown Source)
    at com.test.server.rpc.SrvContractImpl.duplicateContracts(SrvContractImpl.java:699)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:597)
    at com.google.gwt.user.server.rpc.RPC.invokeAndEncodeResponse(RPC.java:561)
    ... 34 more
Caused by: javax.transaction.RollbackException
    at org.objectweb.jotm.TransactionImpl.commit(TransactionImpl.java:329)
    at org.objectweb.jotm.Current.commit(Current.java:485)
    at org.springframework.transaction.jta.JtaTransactionManager.doCommit(JtaTransactionManager.java:1028)
    ... 47 more
Run Code Online (Sandbox Code Playgroud)

问题是,我只是无法调试,某个地方的持久对象存在错误,但我不知道(这不是超时或缺少 @Transactional )。如何获得此异常的更多详细信息?(也许在 oracle 日志中的某个地方?但在哪里?)。

java oracle hibernate transactions exception

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

OIDC Backchannel 注销,如何通过 JEE 应用程序中的 REST 调用终止用户的浏览器会话

我们使用 Keycloak 作为 SSO 提供商来登录我们所有的应用程序。

我们使用 keycloak 注销端点在领域级别注销并使用户的访问令牌无效。

我们的问题是,如果用户已连接websiteAwebsiteB从 注销,他仍然可以通过浏览器websiteA进行活动的本地会话。websiteB

基本上我们希望用户注销websiteB,有点像如果您从 google 驱动器注销,那么一旦您打开 gmail.com,您也会从 gmail 注销

希望对我们来说,keycloak 支持OIDC 反向通道注销

因此,我们定义当用户从 keycloak 注销时,LogoutToken 会发送到我们选择的端点上的每个应用程序

比方说websiteB/backchannel-logout

因此,在我的 JEE 应用程序中,服务器会在 url 上收到 LogoutToken/backchannel-logout

这是注销令牌的样子,仅供参考

{
  "iat": 1654177246,
  "jti": "66265511-a5fc-4f60-b5b7-65bea0e1a9e2",
  "iss": "https://mykeycloakserver.com/auth/realms/myRealm",
  "aud": "websiteB",
  "sub": "18e56c69-a90d-4f32-b76a-c9166def54d0",
  "typ": "Logout",
  "sid": "5bca2f13-f7a6-4b41-bdfc-1f7a89264149",
  "events": {
    "http://schemas.openid.net/event/backchannel-logout": {},
    "revoke_offline_access": true
  }
}
Run Code Online (Sandbox Code Playgroud)

此时,我收到了来自 SSO 提供商 keycloak 的注销请求,其中包含sub用户的唯一 ID,这样我就可以知道我想要注销的用户。

但基本上我只是收到一个包含logout_token来自 keycloak 的HttpRequest

String …

java xwiki single-sign-on keycloak

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

Excel POI某些行已存在时意外丢失的行

有人已经看到这个错误?

我在创建HSSFWorkbook时就明白了

    try {

        LOGGER.info("Open Excel file: " + filename);
        InputStream inputStream = new FileInputStream(filename);
        Workbook wb = new HSSFWorkbook(inputStream);

        Sheet sheet = wb.getSheetAt(0);

        /* save excel */
        FileOutputStream fileOut = new FileOutputStream(filenameOutput);
        wb.write(fileOut);
        fileOut.close();

        wb.close();
        inputStream.close();

    } catch (IOException e1) {
        LOGGER.log(Level.SEVERE, e1.getMessage(), e1);
    }
Run Code Online (Sandbox Code Playgroud)

错误已开启 new HSSFWorkbook(inputstream)

Exception in thread "main" java.lang.RuntimeException: Unexpected missing row when some rows already present
    at org.apache.poi.hssf.usermodel.HSSFSheet.setPropertiesFromSheet(HSSFSheet.java:212)
    at org.apache.poi.hssf.usermodel.HSSFSheet.<init>(HSSFSheet.java:137)
    at org.apache.poi.hssf.usermodel.HSSFWorkbook.<init>(HSSFWorkbook.java:338)
    at org.apache.poi.hssf.usermodel.HSSFWorkbook.<init>(HSSFWorkbook.java:289)
    at org.apache.poi.hssf.usermodel.HSSFWorkbook.<init>(HSSFWorkbook.java:224)
    at org.apache.poi.hssf.usermodel.HSSFWorkbook.<init>(HSSFWorkbook.java:382)
    at org.apache.poi.hssf.usermodel.HSSFWorkbook.<init>(HSSFWorkbook.java:364)
Run Code Online (Sandbox Code Playgroud)

任何的想法 ?

我在http://apache-poi.1045710.n5.nabble.com/Unexpected-missing-row-when-some-rows-already-present-td5527417.html …

java excel apache-poi

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

如果值不同,则DB2,MERGE INTO更新

我有这种工作的DB2请求

MERGE INTO table_to_upsert AS tab
USING (VALUES
        (1, 2, 3),
        (4, 5, 6),
        (7, 8, 9)
        -- more rows
    ) AS merge (C1, C2, C3)
    ON tab.key_to_match = merge.key_to_match -- usually the primary key example : tab.C2 = merge.C2
    WHEN MATCHED THEN
        UPDATE SET tab.C1 = merge.C1,
                   tab.C2 = merge.C2,
                   tab.C3 = merge.C3
    WHEN NOT MATCHED THEN
        INSERT (C1, C2, C3)
        VALUES (merge.C1, merge.C2, merge.C3)
Run Code Online (Sandbox Code Playgroud)

但是现在,我想要的是,如果主键已经存在,然后进行更新,但只有C1的新值与旧值不同时才更新C1。

理论上是这样的

MERGE INTO table_to_upsert AS tab
USING (VALUES
        (1, 2, 3),
        (4, 5, …
Run Code Online (Sandbox Code Playgroud)

sql db2

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