如何使用Nancy进行IdentityServer3身份验证?
Nancy有OpenID身份验证,Nancy有Active Directory身份验证。 Nancy有简单的表单身份验证。 如何使用Nancy进行IdentityServer3身份验证和授权?
我想将登录屏幕设置为IDSrv3,然后返回一个令牌和声明(角色)。
答案 0 :(得分:0)
好的,我认为我理解正确:(请注意本帖末尾的编辑)
IdentityServer3需要您的呼叫,因此您需要注册为客户端。
1.1 没有资源:如果您只是授权API(通常是角色),您只需要使用[授权(角色="角色1,角色2和#34;)进行装饰。 ]。在调用API(使用https !!)时,您需要添加TokenBearer,所有内容都会自动完成。
1.2 使用资源:如果您还根据用户同意和声明(通常再次根据用户的角色)提供资源,则应使用IdentityServer中建议的AuthorizationManager简单的MVC和API step-trough doc。
您使用access_token来调用您的API(以与以前相同的方式),然后他们返回范围和声明。
编辑:
事实证明,API需要更多步骤才能使Authorize [Roles =" roles1,roles2"]正常工作。
要使Authorize在MVC中工作,您必须创建自定义MyAuthorizeAttribute:AuthorizeAttribute类,检查类型" role"的声明,或者您必须更改您的身份服务器代码以返回ClaimTypes.Role用户的角色声明以及具有ScopeType = ID的范围,其中包含ClaimTypes.Role角色。客户端必须允许请求此新范围。
然后你必须在MVC启动类中请求该范围,并且没有声明转换行将声明转换为简单字符串的字典集。
现在,API授权工作更加困难:
请求" id_token令牌"调用ui中的responsetype将在没有声明中的角色的情况下给出access_token。这是因为只有ScopeType = Resource的作用域附加到access_token。所以: