Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/15.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
Asp.net mvc 我是否需要使用Windows Identity Federation实用程序来创建声明感知的asp.net web应用程序?_Asp.net Mvc_Adfs4.0 - Fatal编程技术网

Asp.net mvc 我是否需要使用Windows Identity Federation实用程序来创建声明感知的asp.net web应用程序?

Asp.net mvc 我是否需要使用Windows Identity Federation实用程序来创建声明感知的asp.net web应用程序?,asp.net-mvc,adfs4.0,Asp.net Mvc,Adfs4.0,我按照本页中概述的步骤构建了一个声明感知asp.net mvc应用程序:。页面中的示例在本地主机上使用了STS,但在我的应用程序中,我指的是另一台服务器上功能齐全的AD FS 我正在使用Framework 4.7和Windows Server 2016来托管AD FS和web应用程序 部署应用程序后,我对其运行了Windows Identity Federation实用程序(因为我认为我需要它将应用程序添加为AD FS上的依赖方信任)。此实用工具在web.config中插入大量引用Microso

我按照本页中概述的步骤构建了一个声明感知asp.net mvc应用程序:。页面中的示例在本地主机上使用了STS,但在我的应用程序中,我指的是另一台服务器上功能齐全的AD FS

我正在使用Framework 4.7和Windows Server 2016来托管AD FS和web应用程序

部署应用程序后,我对其运行了Windows Identity Federation实用程序(因为我认为我需要它将应用程序添加为AD FS上的依赖方信任)。此实用工具在web.config中插入大量引用Microsoft.IdentityModel命名空间的标记

然后,我将该应用程序作为依赖方信任添加到AD FS中,并导航到索赔感知应用程序。页面失败,因为示例代码将STS返回的声明转换为System.Security.Claims.claim。当我将其改为转换为Microsoft.IdentityModel.Claims.Claims时,它运行良好

我下面的示例没有提到Windows标识联合实用程序。我需要用这个吗?或者如果没有它,这会起作用吗


当我尝试反转实用程序插入的web.config更改时,站点失败,出现401错误(由于凭据无效,访问被拒绝),因此很明显,实用程序插入的内容需要从AD FS获得身份验证。这是因为在将其作为依赖方信任添加到ADFS之前,我在网站上运行了该实用程序吗?

这里的答案是:如果您使用的是ADFS Server 2016,请不要运行Windows Identity Federation实用程序,因为它会强制使用Microsoft.Identity库,这些库已被弃用。我错误地认为创建FederationMetadata.xml文件需要这个实用程序


我手动创建了FederationMetadata.xml文件,并将web.config恢复到运行该实用程序之前的状态。这使我重新使用添加到4.5框架中的System.Identity库,而不是现在已弃用的Microsoft.Identity库。

请注意,更“现代的方式”是使用该库

这个例子是针对Azure AD的,但您只需指向元数据,代码就会自行计算出所有其他内容