[英]Authentication to Box in a C# desktop application using the Box Windows SDK v2 library
[英]Box Windows V2 SDK with Box.V2.JWTAuth for C# web application
我正在尝试使用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”。
我将其与https://github.com/box/box-windows-sdk-v2中的示例进行比较,并在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文件。
仅添加到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;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.