小编Abd*_*man的帖子

使用公钥端点验证JWT签名

我想验证一些来自微软的JWT的签名.我正在使用Spring-Boot,JJWT库和以下端点:https://login.microsoftonline.com/common/discovery/v2.0/keys

端点返回JSON公钥数组.这是数组中的一个示例.

 {
            "kty": "RSA",
            "use": "sig",
            "kid": "9FXDpbfMFT2SvQuXh846YTwEIBw",
            "x5t": "9FXDpbfMFT2SvQuXh846YTwEIBw",
            "n": "kvt1VmR4nwkNM8jMU0wmj2gSS8NznbOt2pZI6Z7HQT_esF7W19GZR7Y72Xo1i5zXRDM9o3GeTIjBrnr3yy41Q_EaUQ7C-b-Hmg94Vy7EBZyBhi_mznz0dYWs2MIXwR86Nni9TmgTXvjgTPF2YGJoZt4TwcMFefW8rijCVyNrCBA0XspDouNJavvG0BEMXYigoThFjLRXS5U3h4BDfNZFZZS3dyliNOXfgRn2k7oITz8h_ueiPvmDRFh38AeQgx1cELhKWc3P5ugtttraSwgH7nP2NUguO9nCrHuL6TZ-KWpmRWZqwH-jYKFQVt3CDpzwNM6XJL-oHbl1x-gI3YYX5w",
            "e": "AQAB",
            "x5c": [
                "MIIDBTCCAe2gAwIBAgIQZSAeaqWig4BHC1ksmNNcgjANBgkqhkiG9w0BAQsFADAtMSswKQYDVQQDEyJhY2NvdW50cy5hY2Nlc3Njb250cm9sLndpbmRvd3MubmV0MB4XDTE3MDUwNjAwMDAwMFoXDTE5MDUwNzAwMDAwMFowLTErMCkGA1UEAxMiYWNjb3VudHMuYWNjZXNzY29udHJvbC53aW5kb3dzLm5ldDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAJL7dVZkeJ8JDTPIzFNMJo9oEkvDc52zrdqWSOmex0E/3rBe1tfRmUe2O9l6NYuc10QzPaNxnkyIwa5698suNUPxGlEOwvm/h5oPeFcuxAWcgYYv5s589HWFrNjCF8EfOjZ4vU5oE1744EzxdmBiaGbeE8HDBXn1vK4owlcjawgQNF7KQ6LjSWr7xtARDF2IoKE4RYy0V0uVN4eAQ3zWRWWUt3cpYjTl34EZ9pO6CE8/If7noj75g0RYd/AHkIMdXBC4SlnNz+boLbba2ksIB+5z9jVILjvZwqx7i+k2filqZkVmasB/o2ChUFbdwg6c8DTOlyS/qB25dcfoCN2GF+cCAwEAAaMhMB8wHQYDVR0OBBYEFGKpXQNrF5IoxS6bL4F92+gxOJlIMA0GCSqGSIb3DQEBCwUAA4IBAQA3HgW5SoHlvvQVxqqi+mtscDZLhNfe13iG/nx8Er5il82b79RVydNs+f9sYxc4T4ctnrZu7x5e7jInJedNdAlrPorBdw+SfvKJsmiNndXugMew1FlcQTQVIFDCbziaJav8rKyMxPfeKkc1aixbajWZkKg6OPmmJn2ceTocbn8PMQy20xNvcWUwgF5FZZIuPqu6feOLJcUIYw+0JFZ265xka30QXpmytcIxajIzpD4PRdCIBuVSqgXacAs4t4+w+OhnosD72yvXck8M4GwX1j+vcuyw0yhDGNMmqsHWP7H3jnJiGDrKhhdVyplzDhTfv2Whbv/dIDn+meLE3yyC5yGL"
            ],
            "issuer": "https://login.microsoftonline.com/{tenantid}/v2.0"
        }
Run Code Online (Sandbox Code Playgroud)

在JJWT中我实现了SigningKeyResolver接口,我需要返回一个RSAPublicKey实例来进行验证.我遇到的问题是从JSON正确创建Key.

我是从模数和指数开始的吗?

BigInteger modulus = new BigInteger(1, Base64.decodeBase64(jsonKey.getN()));
BigInteger exponent = new BigInteger(1, Base64.decodeBase64(jsonKey.getE()));
publicKey = KeyFactory.getInstance("RSA").generatePublic(new RSAPublicKeySpec(modulus, exponent));
Run Code Online (Sandbox Code Playgroud)

我是从x5c开始,生成X509Certificate对象并从那里拉出PublicKey吗?

CertificateFactory factory = CertificateFactory.getInstance("X.509");
X509Certificate cert = (X509Certificate) factory
          .generateCertificate(new ByteArrayInputStream(
           DatatypeConverter.parseBase64Binary(jsonKey.getX5c())));
publicKey = (RSAPublicKey)cert.getPublicKey();
Run Code Online (Sandbox Code Playgroud)

这两种方法都没有结果.

如果我从模数和指数生成RSAPublicKey,我应该能够打印Base64Binary编码的密钥以匹配x5c属性吗?也许这不是我应该如何验证.

我可能会误解如何使用它.

与往常一样,任何文档也受到赞赏.

java security cryptography jwt jjwt

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

启动Google登录按钮点击

您好我正在使用google api登录我的网络应用程序.现在它的工作正常.但问题是当我进入登录页面时,sigin会自动启动.但我不希望这样.我希望用户先单击"登录"按钮,然后该过程将开始.

我正在使用下面的按钮

<div class="g-signin2" data-onsuccess="onSignIn"></div>
Run Code Online (Sandbox Code Playgroud)

谷歌登录参考.

javascript google-plus google-signin

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

WebRTC - 在通信过程中更改视频流

我的目标是使用 webrtc web 应用程序在视频或音频通话中启用屏幕共享。

好吧,我发现我可以MediaStreamTrack.applyConstraints()用来更改视频属性,但是可以更改视频源吗?此外,如何将视频添加到现有的音频流。

我现在只需要它在 chrome 上工作。

javascript google-chrome video-streaming audio-streaming webrtc

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

如何检查neo4j cypher中是否存在索引

我试图找到一种方法来检查密码模式索引中是否存在某个索引。我可以通过使用找到所有索引call db.indexes()。但是如何检查特定索引?

neo4j cypher

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

Spring Boot [2.6.6] 与此 Spring Cloud 版本系列不兼容

我们正在尝试将 Spring Boot 版本升级到 2.6.6,但遇到了“Spring Boot [2.6.6] 与此 Spring Cloud 发行版不兼容”(运行集成测试时)。

另外的

spring-cloud.version = 2021

我们使用 org.springframework.cloud (spring-cloud-starter-openfeign 和 spring-cloud-openfeign-cores)3.1.1

根据文档,Spring Boot 支持 2.6.6 应该兼容。

migration spring spring-boot spring-cloud-feign

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

如何删除neo4j中的所有索引?

我想批量删除使用密码存在的所有索引可以完成吗?我正在使用 neo4j 3.4.7。

DROP INDEX  ON :Label(attributename)
Run Code Online (Sandbox Code Playgroud)

如果我在稍后阶段创建相同的索引,它是否会替换现有索引?

neo4j cypher spring-data-neo4j

4
推荐指数
2
解决办法
7132
查看次数

如何使用Apache POI将行从现有的Excel工作表复制到新的Excel工作表?

我想比较两个Excel工作表并查找是否有任何行不同,如果要复制不同于该Excel的单行到新Excel中的新行。下面是我从网上获取并尝试的代码段,但是如果我将现有excel的第10行(例如)复制到新excel的第一行,则会出现问题,第1行已在新excel中正确复制,但其余所有行从第一个excel也被复制到新的。我认为问题在于我写新excel的方式[workbook.write(out)]请帮忙!提前致谢!!

    public class RowCopy {

public static void main(String[] args) throws Exception{
    HSSFWorkbook workbook = new HSSFWorkbook(new FileInputStream("c:/input.xls"));
    HSSFSheet sheet = workbook.getSheet("Sheet1");
    copyRow(workbook, sheet, 0, 1);
    FileOutputStream out = new FileOutputStream("c:/output.xls");
    workbook.write(out);
    out.close();
}

private static void copyRow(HSSFWorkbook workbook, HSSFSheet worksheet, int sourceRowNum, int destinationRowNum) {
    // Get the source / new row
    HSSFRow newRow = worksheet.getRow(destinationRowNum);
    HSSFRow sourceRow = worksheet.getRow(sourceRowNum);

    // If the row exist in destination, push down all rows by 1 else create a new row
    if …
Run Code Online (Sandbox Code Playgroud)

java excel apache-poi

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

服务器不以spring app启动

尝试运行Spring temple项目时收到此错误消息不知道为什么?有什么建议 ?

这是控制台的完整日志

INFO: The APR based Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path: C:\Program Files (x86)\Java\jre7\bin;C:\Windows\Sun\Java\bin;C:\Windows\system32;C:\Windows;C:/Program Files (x86)/Java/jre1.8.0_25/bin/client;C:/Program Files (x86)/Java/jre1.8.0_25/bin;C:/Program Files (x86)/Java/jre1.8.0_25/lib/i386;C:\ProgramData\Oracle\Java\javapath;c:\Program Files (x86)\Intel\iCLS Client\;c:\Program Files\Intel\iCLS Client\;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Program Files\Intel\Intel(R) Management Engine Components\DAL;C:\Program Files\Intel\Intel(R) Management Engine Components\IPT;C:\Program Files (x86)\Intel\Intel(R) Management Engine Components\DAL;C:\Program Files (x86)\Intel\Intel(R) Management Engine Components\IPT;C:\Program Files (x86)\Intel\OpenCL SDK\2.0\bin\x86;C:\Program Files (x86)\Intel\OpenCL SDK\2.0\bin\x64;C:\j2sdk1.4.2_04\bin;C:\Program Files (x86)\Java\jdk1.6.0_24\bin;C:\Program Files (x86)\Java\jre6\bin;C:\Program Files (x86)\QuickTime\QTSystem\;C:\Program Files (x86)\Microsoft SQL Server\100\Tools\Binn\VSShell\Common7\IDE\;C:\Program Files (x86)\Microsoft SQL Server\100\Tools\Binn\;C:\Program Files\Microsoft SQL Server\100\Tools\Binn\;C:\Program …
Run Code Online (Sandbox Code Playgroud)

eclipse apache spring tomcat hibernate

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

pageble无法正确显示

当我用弹簧靴将swagger2更新为swagger2时,它停止显示pageable应该显示的类型的 正确参数pagesize而是开始显示pageSizepageNumber而在其余方面不正确。

在此处输入图片说明

我没有手动更改任何内容,但是由于某种原因,它显示了错误的参数名称。

 return new Docket(DocumentationType.SWAGGER_2)
            .groupName("Rest API")
            .securitySchemes(Collections.singletonList(new BasicAuth(BASIC_AUTH)))
            .select()
            .apis(RequestHandlerSelectors.any())
            .paths(PathSelectors.any())
            .paths(s -> oneOf(
                "/some/**",
                "/search-controller/**").test(s))
            .build();
Run Code Online (Sandbox Code Playgroud)

Pom是

<dependency>
      <groupId>io.springfox</groupId>
      <artifactId>springfox-data-rest</artifactId>
      <version>2.9.0</version>
    </dependency>

    <dependency>
      <groupId>io.springfox</groupId>
      <artifactId>springfox-swagger-ui</artifactId>
      <version>2.9.0</version>
    </dependency>
Run Code Online (Sandbox Code Playgroud)

控制器如下所示

@RequestMapping(method = RequestMethod.GET)
    public HttpEntity<?> findAll(@RequestParam(value = "countryIsoAlpha2", required = false) final String countryKey,  final Pageable pageable){

}
Run Code Online (Sandbox Code Playgroud)

spring swagger-ui spring-boot swagger-2.0

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