小编Tra*_*cer的帖子

从命令行运行 Java 到 Kotlin 转换器?

您可以使用 Intellij 和 Eclipse 的 Kotlin 插件将 Java 文件转换为 Kotlin。如果没有这些 IDE 中的任何一个,这种转换是否可以从命令行完成?

java eclipse jetbrains-ide intellij-idea kotlin

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

JwtSecurityTokenHandler表示更改1个字符后JWT的签名有效

我们正在尝试验证OpenID Connect Provider(OP)提供给.NET客户端应用程序的ID令牌(IDT).IDT就是你所期望的.没有什么不寻常的事情在那里.

为了验证IDT的签名,我们可以通过调用公共端点从OP获得指数和模数.这些可用于创建与OP用于签署IDT的私有公钥对应的公钥.通过这些,我们创建了一个RSACryptoServiceProvider对象来进行签名验证.为此,我们将加密服务提供程序作为令牌验证参数传递给JwtSecurityTokenHandler.

这很好用.我们以为我们已经完成并为周末做好了准备.但是,我们发现我们可以更改签名中的最后一个字符,JwtSecurityTokenHandler仍会告诉我们JWT是有效的.我们无法找到解释,并想知道是否:

  1. 这是我们创建签名密钥的方式的问题,导致它不正确地验证JWT.
  2. JwtSecurityTokenHandler中存在一个错误.
  3. 我们不完全理解规范,并且允许这种小的改动,因为JWT的签名部分中的最后一个字符实际上与验证无关.
  4. 还有别的

我们正在使用System.IdentityModel.Tokens.Jwt.dll v4.0.30319中的System.IdentityModel.Tokens.JwtSecurityTokenHandler.

我们的代码的一个非常简单的示例如下.

Program.cs中

using System;
using System.Configuration;
using System.IdentityModel.Tokens;
using System.Text;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            var token = "eyJhbGciOiJSUzI1NiIsImtpZCI6IjEifQ.eyJzdWIiOiJ1c2VyMSIsImF1ZCI6ImNsaWVudDEiLCJqdGkiOiJKcUFDVVFiTlRQR201U0ZJRXY3MWR0IiwiaXNzIjoiaHR0cHM6XC9cL2xvY2FsaG9zdDo5MDMxIiwiaWF0IjoxNDEzNTcwNjEyLCJleHAiOjE0MTM1NzA5MTJ9.Z3P4Rt_w7d0oP8x6zfaot8PIxpEJHUw43Z_4VkOzv59nRz1dWopGUXw51DJd5cLjeM_zc14durs5NhJE27WmcKaEuE8-WZ0ubxM_bzykZfmAPa1WVk9KctPKiUH7QZg4OCLaqIX6usi5kkuICiPVdoJPkHmojMkm5nCqeBIbYteasysMTQGq93VtoBGUQomF89ZaFMBlUy0ofH7SEKJEW_4vgy7Umu0h7kNKkh6Aw4x9Bw1AkG1D6H_scsuH2uSxQ7QV-3G60DcjLZ31_R1ZxaUg2WS2ajemb6swKM4LIOR9_mK6ScUVVBxBL4Oh9g6EA93lMg_1GRZi780v_3TR8Q";

            var tokenValidator = new TokenValidator(new CacheProvider(), new DebugOpenIdConnectProviderClient(), 
                ConfigurationManager.AppSettings["AUDIENCE"], ConfigurationManager.AppSettings["ISSUER"]);
            SecurityToken securityToken;
            var principal = tokenValidator.Validate(token, out securityToken);

            if (principal != null)
            {
                Console.Out.WriteLine("Security token is valid");
            }

            foreach (var claim in principal.Claims)
            {
                Console.Out.WriteLine("{0} = {1}", claim.Type, claim.Value);
            }

            Console.ReadLine();
        } …
Run Code Online (Sandbox Code Playgroud)

c# security oauth-2.0 jwt openid-connect

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

Kotlin Maven 插件中如果为空则跳过

我们在最顶层的项目 POM 中启用了 Kotlin Maven 插件,如下所示:

<plugin>
    <groupId>org.jetbrains.kotlin</groupId>
    <artifactId>kotlin-maven-plugin</artifactId>
    <version>${kotlin.version}</version>

    <executions>
        <execution>
            <id>compile</id>
            <phase>process-sources</phase>
            <goals>
                <goal>compile</goal>
            </goals>
        </execution>

        <execution>
            <id>test-compile</id>
            <phase>process-test-sources</phase>
            <goals>
                <goal>test-compile</goal>
            </goals>
        </execution>
    </executions>
</plugin>
Run Code Online (Sandbox Code Playgroud)

ATM,这个项目中只有少数模块有 Kotlin 源代码。(该项目大约有 50 个模块。)我们的想法是大多数最终都会有 Kotlin 代码,我们不想在每个项目的基础上进行连接。我们想配置一次,然后忘记它。

这有效,除了我们在大多数模块的构建中收到此警告:

[INFO] Kotlin Compiler version 1.0.2
[WARNING] No sources found skipping Kotlin compile
Run Code Online (Sandbox Code Playgroud)

我们的 JAR 插件也有这个问题。该插件有一个配置选项,允许我们这样做:

<configuration>
    <skipIfEmpty>true</skipIfEmpty>
</configuration>
Run Code Online (Sandbox Code Playgroud)

这个关闭那个插件的类似警告。不过,Kotlin 编译器插件似乎没有任何此类配置选项。

所以,我的问题是:

  1. 有没有我们忽略的配置选项?
  2. 我们是否应该以不同的方式配置 Kotlin 编译器插件以避免此警告?

蒂亚!

maven-plugin maven kotlin

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

同一源文档中的不同表格样式

我正在使用 Pandoc 2.10.1 从 Markdown 转换为 DOCX。我的源文件中有 2 个表,它们的样式应该不同。我知道:

  • 表格的默认样式是Table
  • 我可以提供一个参考文档,其中可以收集样式
  • 我可以修改Table这个样式参考文档中的样式
  • 我可以将自己的表格样式添加到此参考文档中

但我无法弄清楚的是,一个表应如何具有默认Table样式,而另一个表应如何具有MyGoodTable样式。我尝试过对一张桌子什么都不做,并将另一张桌子围在一个有围栏的 div 中,如下所示:

:::{custom-style=MyTableStyle}

+-----+-----+-----+
| A   | B   | C   |
+=====+=====+=====+
| 10  | 11  | 12  |
+-----+-----+-----+
| 20  | 21  | 22  |
+-----+-----+-----+
| 30  | 31  | 33  | 
+-----+-----+-----+

:::
Run Code Online (Sandbox Code Playgroud)

然而,这不起作用,即使我的参考文档具有MyTableStyle表格样式。

那么,文档中的一个表格如何具有一种样式,而同一文档中的另一个表格具有另一种样式呢?

markdown cpu-word pandoc

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