서명 된 토큰을받는 웹 응용 프로그램이 있으며 최종 사용자의 컴퓨터에 사전 설치된 인증서로 해당 서명을 확인해야합니다. 저장소에 액세스하여 사용하려는 정확한 인증서를 가져오고 지금까지 저장소에 도달하여 인증서를 계산할 수 있지만 특정 인증서를 찾을 수 없습니다.Windows 인증서 저장소 (C# - ASP.Net)에서 특정 인증서 찾기
내 전략은 주체 이름별로 인증서 검색 결과를 채우는 것입니다. 정확히 필요한 인증서를 선택하기에 충분하므로 컬렉션의 첫 번째 요소를 가져 와서 사용합니다. 이것은 내가 아래 코드에서하고있는 것과 지금까지는 항상 certs
이 비어 있고 문자열로 변환 할 수 없다는 예외가 발생했습니다.
일련 번호로 검색하면 제대로 작동하지만 인증서의 일련 번호는 00이고 내 저장소에는 8 개가 있습니다!
상점에서 특정 인증서를 가져 와서 프로그래밍 방식으로 사용할 수 있습니까?
X509Store st0re = new X509Store(StoreName.Root, StoreLocation.CurrentUser);
st0re.Open(OpenFlags.ReadOnly);
count = st0re.Certificates.Count; //Count the certificates in the store
X509Certificate2Collection certs = st0re.Certificates.Find(
X509FindType.FindBySubjectName,
"C=US, S=WA, L=Redmond, O=Microsoft Corporation, OU=Web Services",
true);
st0re.Close();
Output = certs[0].ToString(); // = count.ToString()
최종 사용자의 컴퓨터에서 - 원격 클라이언트입니까? 지옥, 안돼! 안돼, 미안, 당신이 뭔가 잘못하려하고 있기 때문이야. 웹 응용 프로그램에는 클라이언트 리소스에 대한 액세스 권한이 없습니다. 그리고하지 말라. 비슷한 질문에 대한 설명이 있습니다. https://stackoverflow.com/a/46707759/3997611 – Crypt32
내가 뭘하려고하는지 명확히 해 드리겠습니다. 타사 SSO에 연결된 여러 웹 응용 프로그램이 있습니다. 서버에서 사용자가 URL을 탐색하면 해당 SSO 서버로 리디렉션되어 로그인하고 서명 된 쿠키로 다시 리디렉션됩니다. 쿠키를 제한된 페이지에 넣기 전에 쿠키를 확인하고 싶습니다. 그래서 인증서를로드하고 그것을 사용하여 토큰 서명을 확인하려고합니다. – j0zeft
위 링크를보세요. 웹 응용 프로그램에서 클라이언트 리소스에 액세스 할 수 없으며 액세스 할 수없는 이유를 분명하게 설명합니다. 필수 정보는 웹 응용 프로그램에 미리 구성되거나 기본 프로토콜에 이러한 기능이있는 경우 클라이언트가 제공해야합니다. 인증서에 쿠키가 포함되어 있지 않으면 로컬 (웹 서버) 인증서 저장소를 사용하여 서명의 유효성을 검사하는 데 필요한 인증서를 얻어야합니다. – Crypt32