Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/281.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用于C#web应用程序的带Box.V2.JWTAuth的Box Windows V2 SDK_C#_Box Api_Jwt - Fatal编程技术网

用于C#web应用程序的带Box.V2.JWTAuth的Box Windows V2 SDK

用于C#web应用程序的带Box.V2.JWTAuth的Box Windows V2 SDK,c#,box-api,jwt,C#,Box Api,Jwt,我正在尝试使用Box.V2.JWTAuth创建服务器到服务器的Box api调用 我使用git中的代码: var boxConfig = new BoxConfig(CLIENT_ID, CLIENT_SECRET, ENTERPRISE_ID, JWT_PRIVATE_KEY, JWT_PRIVATE_KEY_PASSWORD, JWT_PUBLIC_KEY_ID); var boxJWT = new BoxJWTAuth(boxConfig); var adminToken = boxJW

我正在尝试使用Box.V2.JWTAuth创建服务器到服务器的Box api调用

我使用git中的代码:

var boxConfig = new BoxConfig(CLIENT_ID, CLIENT_SECRET, ENTERPRISE_ID, JWT_PRIVATE_KEY, JWT_PRIVATE_KEY_PASSWORD, JWT_PUBLIC_KEY_ID);
var boxJWT = new BoxJWTAuth(boxConfig);

var adminToken = boxJWT.AdminToken();
var adminClient = boxJWT.AdminClient(adminToken);
在Visual Stuido中进行调试时,运行至创建新的BoxJWTAuth(boxConfig),始终显示“PEMReader.cs not found”

我比较了中的示例,并在Box.V2.Samples.JWTAuth参考中发现,Box.V2.JWTAuth有一个PEMpasswordFinder类,但我从nuget安装的没有这个类

这就是BoxJWTAuth无法在我的代码中创建的原因吗

有什么想法吗


谢谢。

Box.V2的NuGet软件包已过期。我发现我必须从GitHub下载代码,然后取出所需的两个项目(Box.V2.JWTAuth和Box.V2),并将它们包含在我的项目中


我还要指出,他们的示例不符合大多数企业安全标准,因为证书应该存储在证书存储中,这需要一个PFX文件(而不是PEM文件)。如果他们采用这种方法,就不需要Bouncy Castle来读取PEM文件,因为X509Store类可以从证书存储中读取它们并返回X509Certificate2实例。此外,X509Certificate2还可以直接读取PFX文件,但无法读取PEM文件。

Box.V2的NuGet软件包已过时。我发现我必须从GitHub下载代码,然后取出所需的两个项目(Box.V2.JWTAuth和Box.V2),并将它们包含在我的项目中


我还要指出,他们的示例不符合大多数企业安全标准,因为证书应该存储在证书存储中,这需要一个PFX文件(而不是PEM文件)。如果他们采用这种方法,就不需要Bouncy Castle来读取PEM文件,因为X509Store类可以从证书存储中读取它们并返回X509Certificate2实例。此外,X509Certificate2也可以直接读取PFX文件,但不能读取PEM文件。

补充David的答案,一旦添加了两个项目,您就可以按照以下方式使用PEM文件

   private static BoxClient BoxClient(string user)
    {
        var filePath = HttpContext.Current.Server.MapPath("~/App_Data/private_key.pem");
        var privateKey = File.ReadAllText(filePath);

        var boxConfig = new BoxConfig(CLIENT_ID, CLIENT_SECRET, ENTERPRISE_ID, privateKey, JWT_PRIVATE_KEY_PASSWORD,
            JWT_PUBLIC_KEY_ID);
        var boxJWT = new BoxJWTAuth(boxConfig);

        var userToken = boxJWT.UserToken(user); 
        var userClient = boxJWT.UserClient(userToken, user); 
        return userClient;
    }

为了补充David的答案,一旦您添加了两个项目,您就可以按照这些思路来使用PEM文件

   private static BoxClient BoxClient(string user)
    {
        var filePath = HttpContext.Current.Server.MapPath("~/App_Data/private_key.pem");
        var privateKey = File.ReadAllText(filePath);

        var boxConfig = new BoxConfig(CLIENT_ID, CLIENT_SECRET, ENTERPRISE_ID, privateKey, JWT_PRIVATE_KEY_PASSWORD,
            JWT_PUBLIC_KEY_ID);
        var boxJWT = new BoxJWTAuth(boxConfig);

        var userToken = boxJWT.UserToken(user); 
        var userClient = boxJWT.UserClient(userToken, user); 
        return userClient;
    }

如果您查看反汇编,它指的是bouncy castle,一个加密包。PEM是您的密钥文件,所以我假设它正在尝试读取您的密钥文件,但我还没有看到如何将其指向任何地方。你找到解决方案了吗?如果你查看反汇编,它指的是bouncy castle,一个加密包。PEM是您的密钥文件,所以我假设它正在尝试读取您的密钥文件,但我还没有看到如何将其指向任何地方。你找到解决办法了吗?