小编Jak*_*ski的帖子

保护REST API/Web服务的最佳实践

在设计REST API或服务时,是否存在处理安全性(身份验证,授权,身份管理)的最佳实践?

构建SOAP API时,您需要使用WS-Security作为指南,并且有很多关于该主题的文献.我发现有关保护REST端点的信息较少.

虽然我理解REST故意没有规格类似于WS-*我希望最佳做法或建议的模式已经出现.

任何讨论或相关文件的链接将非常感谢.如果它的事项,我们将使用WCF与我们的REST API的/服务POX/JSON序列信息使用.NET Framework V3.5的建立.

security rest wcf authorization rest-security

828
推荐指数
15
解决办法
31万
查看次数

授权REST请求

我正在开发一个有一些要求的REST服务:

  1. 它必须是安全的.
  2. 用户不应该伪造请求.

我目前提出的解决方案是拥有一个看起来像这样的自定义Authorization标头(这与amazon Web服务的工作方式相同):

Authorization: MYAPI username:signature
Run Code Online (Sandbox Code Playgroud)

我的问题是如何形成签名.当用户登录服务时,他们将获得一个密钥,他们应该能够使用该密钥对请求进行签名.这将阻止其他用户代表他们提交请求,但不会阻止他们伪造请求.

将要使用此服务的应用程序是一个iPhone应用程序,因此我认为我们可以在应用程序中嵌入一个公钥,我们可以进行额外的签名,但这是否意味着我们必须有两个签名,一个用户密钥和应用密钥的密钥?

任何建议都将不胜感激,我非常希望第一次能够做到这一点.

authentication rest authorization http-headers rest-security

15
推荐指数
2
解决办法
5079
查看次数

在Intellij IDEA中更改默认测试类名称后缀

默认情况下,当我在IDEA中生成测试类时,它具有"Test"后缀.由于我通常使用Spock,我希望默认情况下将其更改为"Spec".它有可能吗?

intellij-idea

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

在Graphite支持的Grafana中合并aliasByNode和aliasByMetric

我想按主机名+度量标准名称标记系列.我知道我可以用aliasByNode(1)第一部分aliasByMetric()做第二部分.任何想法如何在单个指标中合并这两个功能?

graphite grafana

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

Spock中的数组断言

我有一些对象列表 - 让我们假设公司.现在,我想检查此列表是否包含具有某些名称但未考虑订单的公司.目前我正在使用这样的结构:

companyList.name.sort() == ["First", "Second"]

Spock或Groovy中是否有任何运算符允许我比较没有顺序的数组?

groovy spock

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

在Spring Data JPA中按类型查询

我抽象课:

@Entity
@Inheritance(strategy = InheritanceType.JOINED)
public abstract class A {
  ...
}
Run Code Online (Sandbox Code Playgroud)

很少扩展类,如:

@Entity
public class B extends A {
  ...
}
Run Code Online (Sandbox Code Playgroud)

我也有第三个实体:

@Entity
public class C  {

  @OneToOne(cascade = CascadeType.ALL, fetch = FetchType.EAGER)
  private A objectA;
  ...
}
Run Code Online (Sandbox Code Playgroud)

问题是,我如何在C实体存储库中构造Spring Data JPA finder,以仅查询扩展A所需类型的对象?

java jpa spring-data spring-data-jpa

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

使用指定的超时验证Spock mock

在Mockito中,可以选择验证是否已调用mock方法,并为此验证指定超时(VerificationWithTimeout),例如:

verify(mock, timeout(200).atLeastOnce()).baz();
Run Code Online (Sandbox Code Playgroud)

在Spock中有没有相当于这样的功能?

testing unit-testing mocking spock

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

为什么Spring bean是单例范围?

我正在与Hibernet和Spring合作,这很好......但我有些疑惑

1)为什么弹簧范围默认是单身?有什么理由吗?

2)我可以在Hibernate实体中编写final varible吗?示例:

@Entity
public class Emp {
  @Id
  private Long id;
  final private String panNo;
}
Run Code Online (Sandbox Code Playgroud)

我可以像上面那样写

3)静态变量可以Seracizable?

spring

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

Ansible 库存组中的通配符

我在单个清单文件中定义了主机组。组被分为数据中心。

[first.dc1]
...
[second.dc1]
...
[first.dc2]
...
[second.dc2]
...
Run Code Online (Sandbox Code Playgroud)

我想定义子分组所有带有后缀 dc1 的组

[dc1:children]
*.dc1
Run Code Online (Sandbox Code Playgroud)

在 Ansible 中可以吗?我已经尝试过 *、全部、范围,但它不起作用

ansible

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

Groovy中的超级类的现场访问

在Groovy中,有一个@可以直接进行现场访问的操作员。但是,它似乎不适用于在超类中声明的字段。考虑两个Java(不是Groovy)类:

class Entity {
  private Long id;

  Long getId() {
    return id;
  }
}

class User extends Entity {
}
Run Code Online (Sandbox Code Playgroud)

然后在Groovy中调用直接访问

User user = new User();
user.@id = 1L
Run Code Online (Sandbox Code Playgroud)

最终出现异常: groovy.lang.MissingFieldException: No such field: id for class User

当我尝试使用标准的访问user.id = 1L,我得到groovy.lang.ReadOnlyPropertyException: Cannot set readonly property: id for class User

是否可以访问超类中声明的字段?

groovy

5
推荐指数
2
解决办法
2959
查看次数