我使用Kentor.AuthService.Idp项目作为起点。
我尝试单点登录的启用 SAML 的服务提供商需要以下属性作为元数据文件的一部分:
登录 ID、合作伙伴 ID、平台、用户电子邮件
如何将这些添加到现有元数据或创建包含这些的新元数据?
服务提供商文档特别指出:
属性列表必须包含在元数据文件和您生成的断言中
在元数据中包含这些属性是否满足服务提供者的要求,或者在断言中包含这些属性与将它们包含在元数据中是完全不同的任务?
我使用Kentor.AuthService.Idp项目作为起点。
我尝试单点登录的启用 SAML 的服务提供商需要以下属性作为元数据文件的一部分:
登录 ID、合作伙伴 ID、平台、用户电子邮件
如何将这些添加到现有元数据或创建包含这些的新元数据?
服务提供商文档特别指出:
属性列表必须包含在元数据文件和您生成的断言中
在元数据中包含这些属性是否满足服务提供者的要求,或者在断言中包含这些属性与将它们包含在元数据中是完全不同的任务?
根据安德斯的回答,我想出了以下代码。
元数据支持的属性
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);
我不确定如何将声明添加到断言中。
这是两个不同的东西。
看起来他们希望您在元数据中指定支持的属性列表。AuthServices 使用的 System.IdentityModel 元数据类支持这一点,但您必须自己添加它们。
在生成的断言上添加属性是一项不同的任务。您可以通过将它们添加为您用于创建断言的身份的声明来做到这一点。