这两天测试使用Orchard Core 1.1作为认证服务器,发现无法返回role claim。研究Orchard代码发现有几个问题导致。首先在OrchardCore.OpenId.AccessController中的GetDestinations中进行Claims.Role的判断有点问题,RoleClaimType是http://schemas.microsoft.com/ws/2008/06/identity/claims/role,不是role。还有一个问题:在ExchangeAuthorizationCodeOrRefreshTokenGrantType方法中调用GetDestinations函数时,Principal的HasScope判断返回总是false,原因是没有设置Proncipal的scopes,在这个方法中request.GetScopes()返回为空,导致判断不正确。目前的办法是将除Permissiion外的所有的Claims返回。
网友评论