2016-08-28 28 views
1

IdentityServer3の設定を取得しようとしており、Pluralsightビデオ(https://app.pluralsight.com/library/courses/building-securing-restful-api-aspdotnet/table-of-contents)を参考にしています。私は基本的なIS3セットアップの段階にあり、 ".UseIdentityServer()"呼び出しのための "SigningCertificate"割り当てに固執しています。IdentityServer3 - X509Certificate2コンストラクタエラー( "要求されたオブジェクトが見つかりません")

私はインターネット上の他の場所でも同様のコードを見てきました。関連するコード:

public X509Certificate2 LoadCertificate() 
{ 
    var baseFolder = AppDomain.CurrentDomain.BaseDirectory; 
    string certificatePath = $"{baseFolder}Certificates\\idsrv3test.pfx"; 

    //var certificateBytes = File.ReadAllBytes(certificatePath); 

    //return new X509Certificate2(certificateBytes, "idsrv3test", X509KeyStorageFlags.Exportable | X509KeyStorageFlags.MachineKeySet | X509KeyStorageFlags.PersistKeySet | X509KeyStorageFlags.UserKeySet | X509KeyStorageFlags.UserProtected); 
    return new X509Certificate2(certificatePath, "idsrv3test", X509KeyStorageFlags.Exportable | X509KeyStorageFlags.MachineKeySet | X509KeyStorageFlags.PersistKeySet); 
} 

public void Configuration(IAppBuilder app) 
{ 
    app.Map("/identity", idSrvApp => 
    { 
      idSrvApp.UseIdentityServer(new IdentityServerOptions 

       SiteName = "My Identity Server", 
       IssuerUri = Constants.IdServerIssuerUri, 
       Factory = new IdentityServerServiceFactory() 
        .UseInMemoryUsers(Users.Get()) 
        .UseInMemoryClients(Clients.Get()) 
        .UseInMemoryScopes(Scopes.Get()), 
       SigningCertificate = LoadCertificate() 
      }); 
    }); 
} 

return new X509Certificate2()行で吹いています。ご覧のとおり、ISSのGithubページからダウンロードしたテスト証明書(https://github.com/IdentityServer/IdentityServer3.Samples/tree/master/source/Certificates)を、パスとバイト配列の両方から読み取ろうとしました。私はまた、X509KeyStorageFlags列挙値のすべてを試しました。どちらもこのエラーを表示します:

[CryptographicException: Cannot find the requested object. ]
System.Security.Cryptography.CryptographicException.ThrowCryptographicException(Int32 hr) +36
System.Security.Cryptography.X509Certificates.X509Utils._QueryCertFileType(String fileName) +0
System.Security.Cryptography.X509Certificates.X509Certificate.LoadCertificateFromFile(String fileName, Object password, X509KeyStorageFlags keyStorageFlags) +100
System.Security.Cryptography.X509Certificates.X509Certificate2..ctor(String fileName, String password, X509KeyStorageFlags keyStorageFlags) +110
MySecurityService.Startup.LoadCertificate() in D:\Documents\Projects\Test\MySecurityService\MySecurityService\Startup.cs:43 UpcarsSecurityService.Startup.b__0_0(IAppBuilder idSrvApp) in D:\Documents\Projects\Test\MySecurityService\MySecurityService\Startup.cs:22 Owin.MapExtensions.Map(IAppBuilder app, PathString pathMatch, Action`1 configuration) +178 Owin.MapExtensions.Map(IAppBuilder app, String pathMatch, Action1 configuration) +108
UpcarsSecurityService.Startup.Configuration(IAppBuilder app) in D:\Documents\Projects\Test\MySecurityService\MySecurityService\Startup.cs:20

ソリューションには「Certificates」ディレクトリがあり、.pfxファイルがあります。 Visual Studioでは、ファイルの "Copy to Output Directory"プロパティを "Copy always"に設定しました。

私はこれに数時間を費やして、本当に何をすべきか分かりません。ちょうど完全に明確にするために、私は現時点でVisual Studio Debug(IIS Express)を通してローカルマシン上でこれを実行しています。私はそれが完了し、展開されたときにIIS内で(ウェブサイトの横に)ホストされることを計画しています。私はWindows 10で動作しています。

ありがとうございました。私はここでかなり失われており、IS3にとってまったく新しいものです。

+0

まあ... IS3 Github証明書ページ(https://github.com/IdentityServer/IdentityServer3.Samples/tree/master/source/Certificates)のガイドに従ってこのテスト証明書をインストールしようとしていました。そして、ステップ6で、この「ファイルタイプは認識できません」というエラーが表示されます:http://i.imgur.com/UXwZ4v4.png)。そして、これはGithubのページからすぐにダウンロードされました。私は次の ".cer"ファイルを試してみる... – clamum

答えて

3

おはようございます。使用していた.pfxファイルは40 KBでした。私が言ったように、これはもともとIS3 Githubサイトからダウンロードされたものです。

しかし、私はGithubの "idsrv3test.pfx"リンクをクリックして、それが3.32 KBであると言いました。右の「ダウンロード」ボタンをクリックして、ディスク上に4 KBの容量を確保していました。

私は、証明書を新しくダウンロードしたものに置き換えました。できます。私はこのasinineの問題で私が多くの時間を無駄にしたとは信じられません。まあ...実際には、私はそれを信じることができます。典型的な。

+0

何とかこれが私に起こった – Bryan

関連する問題