2016-11-22 23 views
3

私はASP.NET Coreアプリケーションを持っており、証明書を使ってAADからアクセストークンを取得しようとしています。私はバージョン3.13.5.907のMicrosoft.IdentityModel.Clients.ActiveDirectoryアセンブリを使用しています。しかし、ClientAssertionCertificateクラスがこのアセンブリから削除されたようです。インターフェイスIClientAssertionCertificateが利用可能ですが、私はそれを実装しているクラスを見つけることができません。ASP.NETコアにClientAssertionCertificateが見つかりません

私は、証明書を使用してAADからアクセストークンを取得するために、次のコードを使用するために使用されるASP.NET 4.5で

(バージョン3.13.4.878のMicrosoft.IdentityModel.Clients.ActiveDirectoryアセンブリ)

var clientCredential = new ClientAssertionCertificate(_appId, _thumbprint); 
var authenticationContext = new AuthenticationContext(authority, false); 
var result = await authenticationContext.AcquireTokenAsync(resource, clientCredential); 

ASP.NETコアでこのクラス減価償却されていますまたは私は何かを逃している?

+1

:https://github.com/aspnet/Security/issues/701 – Tratcher

+1

公開間近:https://github.com/AzureAD/azure-activedirectory-library-for-dotnet/issues/598 –

答えて

3

今日は同じ問題がありました。パッケージMicrosoft.IdentityModel.Clients.ActiveDirectoryを参照することに加えIClientAssertionCertificate

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.Tokensを追加することも必要がありますBase64UrlEncoder)

出典:今、この記事を見て誰にもhttps://blog.mastykarz.nl/azure-ad-app-only-access-token-using-certificate-dotnet-core/

+2

おかげでこのため。この実装はMonoでも動作し、AAD/KeyVaultに関する問題を回避しています。https://github.com/AzureAD/azure-activedirectory-library-for-dotnet/issues/509 –

1

ちょうど更新。これは、最新の.NET Standard 2.0バージョンで利用可能になりました。

実装されていません
関連する問題