从Windows服务访问智能卡所需的权限

时间:2010-11-14 09:04:36

标签: c# .net smartcard least-privilege

我有一个Windows服务,使用智能卡做一些事情。智能卡的证书映射到本地计算机的MY存储中。当服务作为System运行时,访问智能卡的私钥是没有问题的,但是当它作为NetworkService运行时它会失败。

我已经使用证书MMC(管理私钥...)授予了对NetworkService的证书访问权限。

我得到的错误是:智能卡资源管理器未运行。

使用加密异常抛出错误。

Stacktrace:   at System.Security.Cryptography.Utils.CreateProvHandle(CspParameters     parameters, Boolean randomKeyContainer)
    at System.Security.Cryptography.Utils.GetKeyPairHelper(CspAlgorithmType keyType, CspParameters parameters, Boolean randomKeyContainer, Int32 dwKeySize, SafeProvHandle& safeProvHandle, SafeKeyHandle& safeKeyHandle)
    at System.Security.Cryptography.RSACryptoServiceProvider.GetKeyPair()
    at System.Security.Cryptography.RSACryptoServiceProvider..ctor(Int32 dwKeySize, CspParameters parameters, Boolean useDefaultKeySize)
    at System.Security.Cryptography.X509Certificates.X509Certificate2.get_PrivateKey()

访问智能卡资源管理器需要哪些特权和/或权限?

亲切的问候,

Henning Krause

2 个答案:

答案 0 :(得分:1)

LocalService具有足够的权限来访问智能卡。这是我采用的解决方案。

答案 1 :(得分:0)