Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/259.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何使用Kentor AuthService获取其他断言属性_C#_Saml 2.0_Claims Based Identity_Kentor Authservices - Fatal编程技术网

C# 如何使用Kentor AuthService获取其他断言属性

C# 如何使用Kentor AuthService获取其他断言属性,c#,saml-2.0,claims-based-identity,kentor-authservices,C#,Saml 2.0,Claims Based Identity,Kentor Authservices,我正在基于WebForms的应用程序中使用Kentor HttpModule。 我需要用loggin获得附加信息。我不确定,但我认为Kentor只解析attributeID=“userId”,我需要获得更多的属性 我是否需要fork和修改Kentor以使这些值在我的应用程序中可用,或者它们存储在某个地方 我在Saml2Response中看到了从AllAssertionElementNodes方法返回的xmlElements集合,但我不知道如何在app中访问它们 要访问ID,我正在使用此扩展方法:

我正在基于WebForms的应用程序中使用Kentor HttpModule。 我需要用loggin获得附加信息。我不确定,但我认为Kentor只解析attributeID=“userId”,我需要获得更多的属性

我是否需要fork和修改Kentor以使这些值在我的应用程序中可用,或者它们存储在某个地方

我在Saml2Response中看到了从AllAssertionElementNodes方法返回的xmlElements集合,但我不知道如何在app中访问它们

要访问ID,我正在使用此扩展方法:

public static string GetNameID(this IIdentity identity)
    {
        var claimsIndentity = identity as ClaimsIdentity;

        if (string.IsNullOrWhiteSpace(claimsIndentity)
        {
            return string.Empty;
        }

        var providerQuery = from c in claimsIndentity.Claims
                            where c.Type.EndsWith("/identity/claims/nameidentifier")
                            select c.Value;

        var provider = providerQuery.FirstOrDefault();

        return provider;
    }
这是:

if (User.Identity.IsAuthenticated)
 {
     userId = User.Identity.GetNameID();
 }
有什么建议吗

更新


我相信这是一个适当的解决办法。在AcsCommand中的ProcessResponse方法中,我们有一个samlResponseInnerXML,从那里我们可以解析想要的数据、创建额外的声明,或者其他什么,所以现在我有了一个解决方案(可能解决我的问题)。还有其他更优雅的解决方案吗?

Kentor.AuthServices SP将断言中的所有属性转换为声明。如果在
GetNameID
方法中设置断点并检查
claimsIdentity.Claims
枚举,则所有属性都应该在那里。如果他们没有,请在上提交问题。

是的,他们在那里。谢谢!这比我的解决方案更优雅。我编写了一个自定义解析器来从响应XML中提取它们。此外,我没有看到您在IdP解决方案中使用相同的逻辑,将所有附加声明转换为属性。将所有声明转换为属性或相反,是否有任何不利之处?我的意思是,对于我的案例来说,这很好,但一般来说?不,属性和声明实际上只是同一事物的两个名称。在极少数需要过滤声明的情况下,这可以通过
ClaimsAuthenticationManager
完成。我是否可以在不使用自己的解析器的情况下以某种方式访问saml2:Subject saml2:NameID值?NameID也会转换为声明。这在代码中是什么?我看到所有语句都被转换为属性,属性被转换为声明。但对于这个主题,这个主题只是用来生成像素。