Sql server 从SQL Server向ADF添加自定义声明
我正在尝试通过SQL添加自定义属性,并遵循上的步骤[ 我得到了SQL Server设置,带有“attributes”表,但随后我进入了讨论中继方信任的步骤…只需编辑不存在的中继方信任即可。(应用程序现在工作正常,它是一个使用ADFS提供身份验证的网站,但不是授权)-我有API端查询数据库和动态添加声明的代码,但这只适用于服务器端代码,我们真的需要JWT中的声明 所以,看看这篇文章,一切看起来都很好。我得到了SQL Server,我只需要添加一条规则,一旦用户的登录被验证,就可以访问服务器 听起来像是小菜一碟,但没有添加索赔规则的地方——因为我没有(或需要?)任何中继方信任-这可以由AD FS服务器100%处理,因此无需任何中继。我尝试添加一个中继,但无法通过第一个问题。我猜到了那个问题,无法通过第二个问题。此时我放弃了…我怀疑在表单中输入随机数据是否可行 有人能告诉我如何添加它吗?请注意:这不是sharepoint网站,与sharepoint无关。它是一个运行angular应用程序的.Net网站,该应用程序重定向到ADFS服务器,并使用令牌重定向回 那么,这个索赔规则有什么问题吗Sql server 从SQL Server向ADF添加自定义声明,sql-server,adfs,Sql Server,Adfs,我正在尝试通过SQL添加自定义属性,并遵循上的步骤[ 我得到了SQL Server设置,带有“attributes”表,但随后我进入了讨论中继方信任的步骤…只需编辑不存在的中继方信任即可。(应用程序现在工作正常,它是一个使用ADFS提供身份验证的网站,但不是授权)-我有API端查询数据库和动态添加声明的代码,但这只适用于服务器端代码,我们真的需要JWT中的声明 所以,看看这篇文章,一切看起来都很好。我得到了SQL Server,我只需要添加一条规则,一旦用户的登录被验证,就可以访问服务器 听起来
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信任上).我只是被要求修理这个的人。。