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()
라인에 불고 있습니다. 보시다시피, 나는 테스트 인증서 (IS3의 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
솔루션에는 "인증서"디렉토리가 있으며 .pfx 파일이 있습니다. Visual Studio에서 파일의 "Copy to Output Directory"속성을 "Copy always"로 설정했습니다.
나는 이것에 대해 몇 시간을 보냈는데 무엇을해야할지 잘 모릅니다. 그냥 완전히 명확하게하기 위해,이 시점에서 Visual Studio Debug (IIS Express)를 통해 로컬 컴퓨터에서이 프로그램을 실행하고 있습니다. IIS가 완료되고 배포 될 때 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