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