您可以使用 Intellij 和 Eclipse 的 Kotlin 插件将 Java 文件转换为 Kotlin。如果没有这些 IDE 中的任何一个,这种转换是否可以从命令行完成?
我们正在尝试验证OpenID Connect Provider(OP)提供给.NET客户端应用程序的ID令牌(IDT).IDT就是你所期望的.没有什么不寻常的事情在那里.
为了验证IDT的签名,我们可以通过调用公共端点从OP获得指数和模数.这些可用于创建与OP用于签署IDT的私有公钥对应的公钥.通过这些,我们创建了一个RSACryptoServiceProvider对象来进行签名验证.为此,我们将加密服务提供程序作为令牌验证参数传递给JwtSecurityTokenHandler.
这很好用.我们以为我们已经完成并为周末做好了准备.但是,我们发现我们可以更改签名中的最后一个字符,JwtSecurityTokenHandler仍会告诉我们JWT是有效的.我们无法找到解释,并想知道是否:
我们正在使用System.IdentityModel.Tokens.Jwt.dll v4.0.30319中的System.IdentityModel.Tokens.JwtSecurityTokenHandler.
我们的代码的一个非常简单的示例如下.
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) 我们在最顶层的项目 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 编译器插件似乎没有任何此类配置选项。
所以,我的问题是:
蒂亚!
我正在使用 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表格样式。
那么,文档中的一个表格如何具有一种样式,而同一文档中的另一个表格具有另一种样式呢?