我正在通过ASPNET Core使用IdentityServer4,我希望用户既可以通过Web浏览器通过其身份(隐式和混合身份)访问,也可以通过客户端以编程方式(客户端凭据)访问我的API。我意识到我所要做的就是添加AddIdentityServerAuthentication
并完成。但是,这只能解决此问题的身份验证方面,而不能解决授权问题。
使用ASPNET Core,您可以仅使用基于角色的身份验证(或类似的PolicyServer权限),但前提是您具有角色声明身份,不能用于客户端凭据。因此,这使我们需要按角色,策略或范围进行保护。我该怎么办?
AddIdentityServerAuthentication
的调用必须使用相同的权限,因此IdentityServer4.AccessTokenValidation / JwtBearer怎么知道要通过的方案挑战?az cli
,它会神奇地打开浏览器,然后您就可以开始编写脚本以编写内容了。 IS4轻松支持这一点,尤其是使用verficationUrlComplete
我认为我的POC可以正常工作,但是我对此并不满意。 https://gist.github.com/VictorioBerra/8c333a228c55d86a7c15f7f300284634
它基本上涉及重新实现默认范围声明要求处理程序和Policyservers权限要求处理程序。但这是根据令牌类型有条件地应用需求处理程序的唯一方法。
答案 0 :(得分:0)
至少有两种方法可以解决实现基于角色的身份验证的问题:
role
流中拥有client_credentials
个声明的事实。sub
流程,并且实际上将客户绑定到特定的用户帐户(可以将其视为服务帐户),甚至可以提出client_credentials_custom
声明