小编adr*_*obo的帖子

在静态Web中安装AWS Cognito用户池客户端ID

从AWS文档(指定用户池应用程序设置):

开发人员有责任保护任何应用客户端ID或机密,以便只有经过授权的客户端应用才能调用这些未经身份验证的API.

那么在安全条件下是否有任何架构可以进行身份​​验证(不会在静态Web中清除客户端ID).

AWS示例将客户端ID清除,因此不符合文档建议.此外,任何攻击者都可以使用静态Web客户端ID对Cognito未授权的api执行暴力攻击.有什么方法可以避免这种情况吗?

security amazon-web-services amazon-cognito angular

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

在课前用jmockit(1.5)模拟静态方法

根据Jmockit教程中的示例,此代码应该可以解决问题:

@BeforeClass
public static void setUpClass() {
    new MockUp<UtilJndi>(){

      @Mock
      public static String getDirectoryFromContext(Property jndiName) // line 66
             throws DirectoryNotFoundException {
         return "noDirectory";
      }
    };
}
Run Code Online (Sandbox Code Playgroud)

但它显示:

myclass.java:[66,29]错误:非法的静态声明

我该如何解决这个问题?

我将添加另一个对我有用的解决方法:

我创建了我的模拟类扩展MockUp:

public static class MockUtilJndi extends MockUp<UtilJndi> {

    public MockUtilJndi() {
        super();
    }

    @Mock
    public static String getDirectoryFromContext(Property jndiName)
            throws DirectoryNotFoundException {
        return "noDirectory";
    }
}
Run Code Online (Sandbox Code Playgroud)

如果你注意到我在构造函数中调用了super().根据文档的原因,如果你调用MockUp构造函数,它将改变目标类中的实现..所以一旦你在你的模拟类构造函数中有这个,你只需要在@BeforeClass注释方法中创建你的类:

@BeforeClass
public static void setUpClass() {
    new MockUtilJndi();
}
Run Code Online (Sandbox Code Playgroud)

java testing jmockit mocking

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