Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/24.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
Sql server 从SQL Server向ADF添加自定义声明_Sql Server_Adfs - Fatal编程技术网

Sql server 从SQL Server向ADF添加自定义声明

Sql server 从SQL Server向ADF添加自定义声明,sql-server,adfs,Sql Server,Adfs,我正在尝试通过SQL添加自定义属性,并遵循上的步骤[ 我得到了SQL Server设置,带有“attributes”表,但随后我进入了讨论中继方信任的步骤…只需编辑不存在的中继方信任即可。(应用程序现在工作正常,它是一个使用ADFS提供身份验证的网站,但不是授权)-我有API端查询数据库和动态添加声明的代码,但这只适用于服务器端代码,我们真的需要JWT中的声明 所以,看看这篇文章,一切看起来都很好。我得到了SQL Server,我只需要添加一条规则,一旦用户的登录被验证,就可以访问服务器 听起来

我正在尝试通过SQL添加自定义属性,并遵循上的步骤[

我得到了SQL Server设置,带有“attributes”表,但随后我进入了讨论中继方信任的步骤…只需编辑不存在的中继方信任即可。(应用程序现在工作正常,它是一个使用ADFS提供身份验证的网站,但不是授权)-我有API端查询数据库和动态添加声明的代码,但这只适用于服务器端代码,我们真的需要JWT中的声明

所以,看看这篇文章,一切看起来都很好。我得到了SQL Server,我只需要添加一条规则,一旦用户的登录被验证,就可以访问服务器

听起来像是小菜一碟,但没有添加索赔规则的地方——因为我没有(或需要?)任何中继方信任-这可以由AD FS服务器100%处理,因此无需任何中继。我尝试添加一个中继,但无法通过第一个问题。我猜到了那个问题,无法通过第二个问题。此时我放弃了…我怀疑在表单中输入随机数据是否可行

有人能告诉我如何添加它吗?请注意:这不是sharepoint网站,与sharepoint无关。它是一个运行angular应用程序的.Net网站,该应用程序重定向到ADFS服务器,并使用令牌重定向回

那么,这个索赔规则有什么问题吗

c:[Type == "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/name"]
 => issue(store = "SQL", types = ("http://schemas.microsoft.com/ws/2008/06/identity/claims/role"), query = "SELECT role from dbo.ADFS_attributes where logon={0}", param = c.Value);
具体来说,attributes表有logon和role,我正试图根据该用户的记录创建角色(在这种情况下,它应该为每个结果创建一个角色(我希望))

我尝试将此更改为“选择“管理员”角色”,以便始终返回要使用的角色,但这也不起作用。我在事件日志中没有看到任何错误,只是什么都没有…没有更改返回的JWT…(索赔数量仍然相同)-我甚至不能添加“电子邮件”作为传递声明,所以我在这里遗漏了一些东西,或者,它在这里遗漏了一些东西..我不知道是什么

好的,为了确保这是有效的,我添加了以下索赔规则:

 => issue(Type = "http://schemas.microsoft.com/ws/2008/06/identity/claims/role", Value = "Admin");
是的,将其添加到Active Directory提供程序信任中,因此它将始终添加“Admin”角色。Nada

我直接将它添加到“Web应用程序”/“发布”转换规则中,因此不可能不添加它……不,没有

我还验证了“角色”在索赔描述中,并检查是否发布为已接受和已发送

仍然在JTW中得到我一直得到的旧的10件物品

哦,我尝试重新启动“Active Directory联合身份验证服务”服务。。。 并在调试器在网页上启动时标记为“清除浏览器缓存”

听起来好像ADFS实际上不起作用,或者没有任何索赔规则运行。是否有一个全局设置需要启用“启用自定义规则”?

是一篇更好的文章,因为它没有引用SharePoint

此外,规则应为“发布”而不是“添加”

在RP端,添加索赔规则

您需要RP信任,因为这是将获得索赔规则的应用程序

要手动添加RP信任,请参阅


此外,您还提到了JWT?您使用的是什么协议?SAML?OpenID Connect?

结果表明,您可以将规则添加到“应用程序组”/“Web应用程序”,并选择“发布转换规则”,然后在此处添加SQL声明规则:

c:[类型==”“] =>issue(store=“SQL”,types=(“”),query=“从dbo.ADFS_属性中选择角色,其中logon={0}”,param=c.Value)

如果您有多个角色,这允许您添加多个角色

我没有看到这一点的主要原因是,放在上面的UI(不知何故)将一个不同的令牌(没有我的角色)发布回API服务器。我正在研究它从何处获得该令牌,为什么该令牌没有经过验证(不是来自服务器,或者它会添加我的角色)…非常奇怪

通过使用PostMan向服务器发送邮件,然后查看返回的JWT,解决了这个问题


似乎所有的JWT签名验证都不是由最后一个人完成的…

哦,另外,我正在尝试添加多个角色,因此我希望如果索赔规则返回多个值,这将正常工作-每个匹配创建一个索赔…(这是第2步,一旦我得到返回单个索赔)我很想知道为什么否决。试图将SQL声明规则添加到Web应用程序属性的“发布转换规则”中,但没有效果,请创建相同的JWT…(使用openid作为客户端权限)我不是安装ADFS的人,它似乎在使用OpenID,你检查JWT,如果无效,重定向到ADFS站点以获得一个新的,它会重定向回。我不能100%确定它是否配置正确。我似乎可以在索赔提供者信任上添加索赔规则,(在Active Directory信任上).我只是被要求修理这个的人。。