小编Dan*_*dio的帖子

确定oauth回调中的用户ID

OAuth流程是:

  1. 对于OAuth身份验证,应用程序(也称为OAuth客户端)会将用户重定向到 authorize_url

  2. 这会将用户重定向到oauth服务器的网络服务器,用户可以在其中授予网络应用访问他/她的帐户的权限

  3. OAuth服务器将用户重定向到应用程序(也称为oauth客户端)提供的回调URL.此时,回调来自OAuth服务器,因此没有会​​话ID或会话哈希.应用程序如何确定调用post-oauth回调的用户?

我虽然这样做的方式是:

  1. 将用户重定向到authorize_url您将某些参数附加到查询字符串时?id=xxx

  2. 当OAuth服务器重定向到客户端提供的callback_url时,带有HTTP消息的参数之一将是在步骤1中附加到查询字符串的参数.

但是,这似乎不适用于我试图加入的OAuth服务器.

有什么建议?

oauth

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

在没有特殊gitlab用户的情况下设置gitlab LDAP身份验证

我想用我们公司的LDAP作为演示来设置Gitlab.但不幸的是,我必须在gitlab.yml中输入一个管理员密码,以使gitlab访问LDAP服务.问题实际上是管理,因为他们不想仅为Gitlab设置另一个帐户.有没有办法在不填写我自己的密码的情况下绕过这个?有没有办法让Gitlab只使用提供的用户凭证建立LDAP连接?

除了以匿名方式登录之外的任何想法?

已经发布在这里.

ldap gitlab

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

NPath复杂性

在这一行:

public Map getAll(BusinessTargetPK pkBusinessTargetId) throws Exception
Run Code Online (Sandbox Code Playgroud)

我收到此错误:

NPath复杂度为32,768(最大允许值为200)

在这一行:

public Map getAll( Long  RLE_ROLE_ID  ) throws Exception {
Run Code Online (Sandbox Code Playgroud)

我收到此错误:

getAll()方法的NPath复杂度为2048

我完全不知道什么是NPath复杂性及其含义.

有人可以提供建议如何避免这种类型的错误?

java pmd sonarqube

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

缓存基于Maven的Docker构建的Jar依赖项

我正在从这个Dockerfile构建一个Docker镜像:

FROM maven:3.3.3-jdk-8
MAINTAINER Mickael BARON  

ADD pom.xml /work/pom.xml
WORKDIR /work
RUN mvn dependency:go-offline --fail-never

ADD ["src", "/work/src"]
RUN ["mvn", "package"]
Run Code Online (Sandbox Code Playgroud)

使用这个Dockerfile,我强制在打包Java项目之前下载依赖项.因此,每次我从src目录更改文件时,我都不必重新下载依赖项.

但是,有一个问题,这个问题取决于Maven的版本(基本图像).实际上,下载了依赖项,但它们不会持久保存到容器的〜/ .m2目录中.它是空的.因此,当我更改一些源文件时,所有依赖项都被重载.

但是,我注意到如果我从基本图像(例如FROM maven:3.2.5-jdk-8)更改Maven的版本,它可以工作.

很奇怪,不是吗?

dependencies maven docker dockerfile

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

为什么使用带有Oracle 10g方言的Hibernate使用JPA创建名为hibernate_sequence的序列?

我所有的实体都使用这种类型 @Id

@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "MYENTITY_SEQ")
@SequenceGenerator(name = "MYENTITY_SEQ", sequenceName = "MYENTITY_SEQ")
@Column(name = "MYENTITY", nullable = false)
private Long id;
Run Code Online (Sandbox Code Playgroud)

要么

@Id
@Column(name = "MYENTITY")
Run Code Online (Sandbox Code Playgroud)

我发现hibernate_sequence始终创建一个名为Oracle的序列.为什么会这样?我怎么能避免这种情况?

我正在使用JPA1与Hibernate 3和Oracle 10g方言.

java orm hibernate jpa oracle10g

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

Logback的Syslog Appender

我已经在syslog appender上多次阅读了logback的文档.我的印象是系统日志守护程序在每台计算机上运行,​​所以我设置配置就像在他们的示例中一样.当我运行程序时,在检查系统日志时没有发生错误,那里没有记录任何内容.

<appender name="SYSLOG" class="ch.qos.logback.classic.net.SyslogAppender">
  <syslogHost>my ip adress</syslogHost>
  <facility>USER</facility>
  <suffixPattern>[%thread] %logger %msg</suffixPattern>
</appender>`
Run Code Online (Sandbox Code Playgroud)

syslog logback slf4j appender

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

在Mercurial中,"头部"和"分支"之间有什么区别?

我是Mercurial和DVCS的新手.头部树枝之间有什么区别?

mercurial dvcs

7
推荐指数
2
解决办法
2312
查看次数

为什么PBE会生成具有不同盐和迭代次数的相同密钥?

我正在尝试测试PBE加密/解密.我发现PBE生成具有不同盐和迭代计数的相同密钥.当然,使用的密码是相同的.据我所知,相同的密码和不同的salt/iteration应该得到不同的密钥.以下是我的测试代码:

import java.security.Key;
import java.security.SecureRandom;
import javax.crypto.SecretKeyFactory;
import javax.crypto.spec.PBEKeySpec;

public class PBETest
{
    public static void main(String[] args)
        throws Exception
    {
        String algo = "PBEWithSHA1andDESede";
        System.out.println("====== " + algo + " ======");

        char[] password = "password".toCharArray();
        SecureRandom rand = new SecureRandom();
        byte[] salt = new byte[32];
        rand.nextBytes(salt);
        int iterationCount = rand.nextInt(2048);

        //encryption key
        PBEKeySpec          encPBESpec = new PBEKeySpec(password, salt, iterationCount);
        SecretKeyFactory    encKeyFact = SecretKeyFactory.getInstance(algo);
        Key encKey = encKeyFact.generateSecret(encPBESpec);
        System.out.println("encryptioin iteration: " + iterationCount);

        //decryption key
        rand.nextBytes(salt);
        iterationCount = rand.nextInt(2048);
        PBEKeySpec …
Run Code Online (Sandbox Code Playgroud)

passwords iteration key salt

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

将Envers添加到现有数据库

我在生产中有一个基于Hibernate的应用程序,有一个大型数据库.我需要在这个应用程序中向两个实体(两个表)添加审计,我决定使用Envers.

对于每个INSERT,UPDATE或DELETE,Envers都会向实体的审计表添加新记录.

如果我从应用程序的启动中获得了Envers支持,则会在创建实体(INSERT)时填充审计表.

Envers文档非常精简,并未提及有关向现有应用程序添加Envers的任何信息.

如果我只是添加Envers支持并创建相应的审计表,它们将从空开始,因此当我更新现有实体时,Envers会将记录添加到记录新值的审计表中,但我将丢失以前的值.

如何向具有现有数据库的应用程序添加Envers支持?

hibernate hibernate-envers

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

如何在Jenkins中删除不可阻挡的管道作业?

我正在使用Jenkins 的Pipeline(以前的Workflow)插件集合.我已经设法在我的Jenkins服务器上创建了一个工作流作业,我无法阻止.查询当前堆栈跟踪Thread.getAllStackTraces().keySet().each() { t -> println(t.getName())}不会返回与此作业匹配的输出中的任何执行程序.最重要的是,如果这是Build Executor Status窗口中唯一的实时作业,则根本没有列出执行程序.

重新启动正在执行作业的从站无效.重新启动Jenkins主服务器也没有任何效果.有关如何摆脱这件事的任何想法?

jenkins jenkins-pipeline

7
推荐指数
2
解决办法
3951
查看次数