Управляемая карточка представляет метаданные о службе маркеров безопасности (STS), такие как адрес службы, метод проверки подлинности и утверждения, выпускаемые этой службой. Когда создается служба для выпуска маркеров для средств выбора удостоверений, необходимо также выпускать управляемые информационные карточки для пользователей. В данном разделе описано, как это сделать.

Выпуск карточки

В следующем примере кода показано, как на странице ASP.NET можно выпустить управляемые информационные карточки с жестко закодированными адресами для STS и проверяющей стороны.

  Копировать код
protected void IssueCard() { // STS certificate X509Store store = new X509Store(StoreName.My, StoreLocation.LocalMachine); store.Open(OpenFlags.ReadOnly); X509Certificate2Collection certificateCollection = store.Certificates.Find(X509FindType.FindBySubjectDistinguishedName, "CN=localhost", true); store.Close(); X509Certificate2 stsCertificate = certificateCollection[0];

	// STS endpoint addresses string stsAddress = "http://localhost/Sts"; string stsMex = "https://localhost/mex"; // Initialize the card with the STS signing certificate and the STS issuer name InformationCard card = new InformationCard(stsCertificate, "http://myissuer"); // Set the claim types supported by the STS card.SupportedClaimTypeList.Add(new DisplayClaim(ClaimTypes.Role)); // Set the token types supported by the STS card.SupportedTokenTypeList.Add(Saml11SecurityTokenHandler.OasisWssSamlTokenProfile11); // The TokenService class describes an STS's endpoint information // This code demonstrates how to setup a card for an sts endpoint // that expects Kerberos authentication TokenService stsEndpoint = new TokenService(new TokenServiceEndpoint(stsAddress, stsCertificate, stsMex, UserCredentialType.KerberosV5Credential)); card.TokenServiceList.Add(stsEndpoint); // Set the card language card.Language = "en"; InformationCardSerializer cardSerializer = new InformationCardSerializer(); // Write this out to the current directory FileStream cardStream = new FileStream("InformationCard.crd", FileMode.Create, FileAccess.ReadWrite); cardSerializer.WriteCard(cardStream, card); cardStream.Close(); }
Примечание.
Рекомендуется, чтобы служба STS поддерживала кэш выпускаемых информационных карточек. Тогда при получении запроса на выдачу маркера служба сможет проверить, имеется ли в запросе ссылка на известную действующую информационную карточку. Если ссылка указывает на неизвестную или просроченную информационную карточку, STS сможет обработать запрос соответствующим образом.