首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在ClientAssertionCertificate内核中找不到ASP.NET

在ClientAssertionCertificate内核中找不到ASP.NET
EN

Stack Overflow用户
提问于 2016-11-22 09:47:44
回答 2查看 2.9K关注 0票数 7

我有一个ASP.NET核心应用程序,我正在尝试使用证书从AAD获取访问令牌。我正在使用3.13.5.907版本的Microsoft.IdentityModel.Clients.ActiveDirectory程序集。但是ClientAssertionCertificate类似乎已经从这个程序集中删除了。接口IClientAssertionCertificate是可用的,但我找不到任何实现它的类。

在ASP.NET 4.5中,我使用以下代码来使用证书从AAD获取访问令牌(3.13.4.878版本的Microsoft.IdentityModel.Clients.ActiveDirectory程序集)

代码语言:javascript
运行
复制
var clientCredential = new ClientAssertionCertificate(_appId, _thumbprint);
var authenticationContext = new AuthenticationContext(authority, false);
var result = await authenticationContext.AcquireTokenAsync(resource, clientCredential);

这个类是在ASP.NET核心中贬值了,还是我遗漏了什么?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-01-03 08:18:55

我今天也遇到了同样的问题;事实证明,编写您自己的IClientAssertionCertificate的具体实现非常容易。

代码语言:javascript
运行
复制
using Microsoft.IdentityModel.Clients.ActiveDirectory;
using Microsoft.IdentityModel.Tokens;
using System.Security.Cryptography;
using System.Security.Cryptography.X509Certificates;
using System.Text;

namespace app{

    internal class ClientAssertionCertificate : IClientAssertionCertificate {

        private X509Certificate2 certificate;
        public string ClientId { get; private set; }

        public string Thumbprint {
            get {
                return Base64UrlEncoder.Encode(certificate.GetCertHash());
            }
        }

        public ClientAssertionCertificate(string clientId, X509Certificate2 certificate) {
            ClientId = clientId;
            this.certificate = certificate;
        }

        public byte[] Sign(string message) {
            using (var key = certificate.GetRSAPrivateKey()) {
                return key.SignData(Encoding.UTF8.GetBytes(message), HashAlgorithmName.SHA256, RSASignaturePadding.Pkcs1);
            }
        }
    }
}

除了引用包Microsoft.IdentityModel.Clients.ActiveDirectory,之外,还需要添加包Microsoft.IdentityModel.Tokens (对于Base64UrlEncoder)

来源:https://blog.mastykarz.nl/azure-ad-app-only-access-token-using-certificate-dotnet-core/

票数 5
EN

Stack Overflow用户

发布于 2017-11-08 15:36:25

只是现在看到这个帖子的人的最新消息。这现在可以在最新的.NETStandard 2.0版本中使用。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40738521

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档