小编ric*_*ico的帖子

如何使用Javascript OAuth库不暴露您的密钥?

看看Twitter OAuth Libraries,我看到了这个说明:

在OAuth中使用JavaScript时要小心.不要暴露你的钥匙.

然后,看看jsOAuth示例,我注意到密钥在代码中公开.

所以我的问题是:当您在Javascript中使用OAuth库时,如何不暴露您的密钥?

谢谢.

更新:好的,也许jsOAuth不是正确的库,但是如何在完整的Javascript网站上使用OAuth进行身份验证?

javascript security oauth

24
推荐指数
2
解决办法
8563
查看次数

Elasticsearch和NoSql数据库

使用ElasticSearch和分离的Nosql数据库有什么用?Elasticsearch不能同时用作数据库和搜索索引吗?

nosql elasticsearch

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

使用Spring Security进行特殊登录

我目前工作的公司有一种特殊的身份验证过程.

实际上,一些用户可以拥有相同的登录名和密码.因此,为了识别它们,用户必须第二次发送他的电子邮件.但同样,在少数情况下,几个用户可能会担心,然后,用户必须给他的公司ID进行完全身份验证.

所以,我的问题是在某些情况下,身份验证过程无法在一个步骤中完成,这是Spring Security处理的大多数应用程序的默认行为.

所以我的问题是:使用Spring Security实现这种特殊登录过程的最简单方法是什么?

提前致谢.

java spring-mvc spring-security

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

保护javascript前端/ REST后端架构网站的最佳方法?

我想构建以下项目:

  • 公共REST API后端,可由任何经过身份验证的客户端访问
  • 带有Backbone.js的HTML/CSS/Javascript中的静态文件的前端jQuery调用REST后端

事实上,我的架构中有三方:前端,后端的客户端,后端和想要在前端登录页面上进行身份验证的用户.

确保参与此架构的三方的最佳方法是什么?

事实上,我相信如果我在javascript中做所有事情,在前端做一个安全的应用程序是不可能的,所以我打算将身份验证/授权委托给我的服务器前端的代理层.你觉得怎么样?

我打算使用OAuth来保护我的REST后端,但我不确定是否必须使用2或3脚的实现.在这种情况下,正确的方法是什么?

更新:在SO网站上深入搜索时,我发现这个线程正是我想做的,除了我想在服务器端使用Java而不是DotNet.如果我理解得很好,事实上我的网站就像我的REST API的任何客户端,除了它是唯一有权创建新用户帐户的网站.因为,如果我的REST API只能由OAuth访问(如Twitter的那个),谁可以在之前执行用户帐户创建?我对吗 ?

javascript java architecture security rest

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

JQuery跨域基本身份验证调用

我已经使用Spring MVC构建了一个REST API后端,并使用Spring Security安装了基本的Auth.

我想从Javascript客户端对REST API进行跨域ajax调用.我不想使用JSONP,因为我不想限于GET调用.我使用CORS,我在服务器端放置了正确的标题.

假设我的REST API在域localhost:8087上,我的客户端在localhost:8086上,这是跨域调用.

在我的Javascript客户端中,我使用jQuery进行ajax调用:

<script>
        $.ajax ({
            url: "http://localhost:8087/SpringMVC/users/user1",
            beforeSend: function (xhr) { xhr.setRequestHeader ("Authorization", "Basic xxxxxxxxxxxx"); },
            success: function(val) { console.log(val); alert("success" + val); },
            error: function(val) { console.log(val); alert("error" + val); }
        });
</script>
Run Code Online (Sandbox Code Playgroud)

我的问题是jQuery没有在HTTP请求中发送Authorization标头,我不知道为什么.我不明白因为我在beforeSend方法中这样做,所以它应该在HTTP请求中.结果:我有401错误.

当我尝试从同一域localhost:8087,这不再是跨域的脚本,我没有问题.

这怎么可能 ?

我的脚本只是一个测试.我不打算将我的用户名/密码放在客户端.但我想测试如何对基本的auth保护的REST API进行ajax调用.我想我必须在服务器端发送安全我的用户名/密码,REST API发送给我一个cookie,我不需要再传递用户名/密码,我的下一个ajax调用REST API.我对吗 ?

我已经使用Chrome Advanced REST客户端测试了我的REST API,它就是这样工作的.对于第一个请求,我需要传递授权标头.然后就不需要了.我的javascript网络客户端是否也可以这样工作?我打算使用Node.JS和Backbone来构建它.

非常感谢.

EDIT2:似乎真的是一个CORS浏览器问题.我在服务器端添加了标题Access-Control-Allow-Methods for OPTIONS方法,它适用于Chrome.我可以访问JSON响应,不再出错.但是我仍然需要为下一个请求使用授权标头.如何告诉jQuery使用发送的cookie?

当我尝试使用Firefox 11时,我无法访问json响应并且我有错误:

"NetworkError: 401 Non-Autorisé - http://localhost:8087/SpringMVC/users/user1"
Run Code Online (Sandbox Code Playgroud)

jquery spring-security cross-domain basic-authentication cors

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

用于低延迟客户端到服务器消息的HTTP/2或Websockets

我要求我的Web应用程序中的客户端到服务器消息的延迟非常低.

我在stackoverflow上看过几篇帖子说最好使用websockets而不是HTTP来满足这个要求,但是很久以前.

今天,在2018年,随着HTTP/2的进展,是否仍然值得使用websockets这个用例?

websocket http2

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

提交表单时显示ajax加载程序图标

我的需要很简单.当用户尝试登录并提交登录表单时,我会在前台显示ajax加载程序图标(如www.ajaxload.info生成的图标),背景透明且不可点击(如本网站所示).当服务器完成后,它可以显示下一页或重新显示带有错误的旧页面.

我怎样才能做到这一点?

非常感谢你提前.

html javascript css

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

使用AngularJS配置Spring MVC

我希望能够在客户端使用Spring MVC作为REST服务器和AngularJS.

我有几个REST的网址:

  • / REST /产品
  • / REST /产品/ {ID}

我有几个UI的网址:

  • /店/产品
  • /店/产品/ {ID}

由于AngularJS在客户端执行技巧,我只想将所有默认的UI(而不是其余的)重定向到AngularJS使用的index.html文件.

所以,在Spring MVC配置中,我希望能够做到这样的事情:

@EnableWebMvc
@Configuration
@ComponentScan(basePackages = "com.mypackage.web")
public class WebAppConfiguration extends WebMvcConfigurerAdapter {

    @Override
    public void addViewControllers(ViewControllerRegistry registry) {
        registry.addViewController("/**").setViewName("index");
    }

    @Bean
    public ViewResolver viewResolver() {
        InternalResourceViewResolver resolver = new InternalResourceViewResolver();
        resolver.setPrefix("/");
        resolver.setSuffix(".html");
        return resolver;
    }

    @Override
    public void configureDefaultServletHandling(DefaultServletHandlerConfigurer configurer) {
        configurer.enable();
    }

}
Run Code Online (Sandbox Code Playgroud)

有了它,我想将所有UI URL处理委托给AngularJS.

我还想要,如果用户在浏览器中写了一个坏URL,他将被Spring MVC重定向到index.html文件,它将是AngularJS,它将在错误页面上进行重定向.我在Web上看到了几个带有单个index.html文件的项目,但没有人处理这个错误情况.

我一直在努力尝试这个技巧,但我无法找到解决方案.

所以我的问题是:我怎么能这样做?更一般地说,我错误的是这个Spring MVC-AngularJS想要的配置?

非常重要:我使用没有web.xml的Spring MVC 3.2和Tomcat 7.34(完整的Servlet 3.0)

非常感谢.

spring-mvc tomcat7 angularjs

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

Sonar + Jacoco + Junit 5:没有关于每次测试覆盖率的信息

我正在尝试使用 Sonarqube 7 获得每个测试功能的覆盖率。

我正在使用 jacoco-maven-plugin 并且我的测试正在使用 JUnit 5 运行。

我成功地在 Sonarqube 仪表板上获得了全球覆盖,但我想通过能够查看哪些测试覆盖了我的课程的哪些行来更深入。

我在这里尝试了给定的配置但没有成功:我在日志中收到以下消息“没有关于每个测试覆盖率的信息”。我看到这可以通过添加一个 listener 来获得org.sonar.java.jacoco.JUnitListener,但它是一个 JUnit 4 监听器,所以我想它因此不起作用。

我如何才能使每个测试功能的 Coverage 与 JUnit 5 一起使用?

java test-coverage sonarqube jacoco-maven-plugin junit5

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

在minishift上使用openshift客户端的权限问题

我已经安装了带有自制的cask和openshift客户端的minishift.

但是,作为开发人员用户,我无法从openshift cli创建项目,触发构建等.我总是有权限错误:

Error from server (Forbidden): User "developer" cannot list all project.openshift.io.projectrequests in the cluster
Error from server (Forbidden): User "developer" cannot list authorization.openshift.io.rolebindings in project "my_awesome_project"
Error from server (Forbidden): User "developer" cannot create build.openshift.io.buildconfigs/instantiatebinary in project "my_awesome_project"
Run Code Online (Sandbox Code Playgroud)

但是,我可以从UI创建项目.如何从命令行授予开发人员用户权限?

我正在使用MacOS High Sierra:

? minishift version
minishift v1.15.1+a5c47dd

? oc version
oc v3.9.0+191fece
kubernetes v1.9.1+a0ce1bc657
features: Basic-Auth

Server https://192.168.99.100:8443
openshift v1.5.0-rc.0+49a4a7a
kubernetes v1.5.2+43a9be4
Run Code Online (Sandbox Code Playgroud)

macos openshift openshift-client-tools minishift

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

Wrk vs Gatling 基准测试比较

使用 wrk,我运行了以下命令:

wrk -t10 -c10 -d30s http://localhost:8080/myService --latency -H "Accept-Encoding: gzip"
Run Code Online (Sandbox Code Playgroud)

结果,我获得了 Requests/sec: 15000 并且没有错误

我正在尝试使用 Gatling 重现相同类型的测试。所以我尝试了以下方法:

scn.inject(
      rampUsersPerSec(1) to 15000 during (30 seconds)
    )
Run Code Online (Sandbox Code Playgroud)

但结果,我得到了错误:

---- 错误 --------------------------------------------- -----------------------

incAbstractChannel$AnnotatedSocketException: 无法分配 r 573 (42,44%) 请求地址:localhost/127.0.0.1:8080 incAbstractChannel$AnnotatedSocketException: Resource tempo 530 (39,26%) 很少不可用:localhost/0:0:0: 0:0:0:0:1:8080 jiIOException: 过早关闭 247 (18,30%)

从 wrk 来看,我相信我的服务器可以处理 15000 个请求/秒,但使用 Gatling 似乎并非如此。你知道为什么会有这样的差异吗?

gatling wrk

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

什么时候真正需要 volatile 关键字?

此代码取自Jeff Friesen 所著的《Java 线程和并发实用程序》一书:

public class PC {
    public static void main(String[] args) {
        Shared s = new Shared();
        new Producer(s).start();
        new Consumer(s).start();
    }
}
Run Code Online (Sandbox Code Playgroud)
class Shared {
    private char c;
    private volatile boolean writeable = true;

    synchronized void setSharedChar(char c) {
        while (!writeable)
            try {
                wait();
            } catch (InterruptedException ie)  {
            }
        this.c = c;
        writeable = false;
        notify();
    }

    synchronized char getSharedChar() {
        while (writeable)
            try {
                wait();
            } catch (InterruptedException ie)  {
            }
        writeable = true; …
Run Code Online (Sandbox Code Playgroud)

java concurrency

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