Как добавить собственные метаданные для Kentor idprovider?
Я использую проект Kentor.AuthService.Idp в качестве отправной точки.
Поставщик услуг с поддержкой SAML, к которому я пытаюсь войти, требует, чтобы следующие атрибуты были частью файла метаданных:
идентификатор входа, идентификатор партнера, платформа, адрес электронной почты пользователя
Как добавить их в существующие метаданные или создать новые метаданные, которые включают их?
В документации поставщика услуг конкретно говорится:
список атрибутов должен содержаться в файле метаданных и в сгенерированных вами утверждениях
Удовлетворяет ли включение этих атрибутов в метаданные требованию поставщика услуг или же включение этих атрибутов в утверждение является совершенно иной задачей, чем включение их в метаданные?
2 ответа
Это две разные вещи.
Похоже, они хотят, чтобы вы указали список поддерживаемых атрибутов и метаданных. Классы метаданных System.IdentityModel, используемые AuthServices, поддерживают это, но вам придется добавить их в себя.
Добавление атрибутов в сгенерированные утверждения является другой задачей. Вы можете сделать это, добавив их в качестве утверждений к идентификатору, который вы используете для создания утверждения.
Основываясь на ответе Андерса, я придумал следующий код.
Атрибуты, поддерживаемые метаданными
var descriptor = new IdentityProviderSingleSignOnDescriptor();
descriptor.SupportedAttributes.Add(new Saml2Attribute("platform", "desktop"));
descriptor.SupportedAttributes.Add(new Saml2Attribute("partnerid", "partner123"));
descriptor.SupportedAttributes.Add(new Saml2Attribute("login-id", "user9"));
descriptor.SupportedAttributes.Add(new Saml2Attribute("useremail", "donotreply@domain.com"));
Атрибуты сгенерированных утверждений
var claims = new List<Claim>();
claims.Add(new Claim("platform", "desktop"));
claims.Add(new Claim("partnerid", "partner123"));
claims.Add(new Claim("login-id", "user9"));
claims.Add(new Claim("useremail", "noreply@domain.com"));
var identity = new ClaimsIdentity(claims);
Я не уверен, как добавить претензии к утверждению.