WSO2自定义声明处理程序未被调用密码grant_type

时间:2018-04-06 16:56:39

标签: wso2 wso2is

我一直在使用WSO2IS作为OIDC提供商。我已经实现了一个自定义声明处理程序,它正常工作并在WSO2收到grant_type" Authorization_code"时被调用。当服务提供商使用grant_type=password发送请求时,问题就开始了。在这种情况下,WSO2成功验证了用户并返回了JWT但是......没有自定义声明,因为WSO2没有调用自定义声明处理程序。

这是我在文件<IS_HOME>/repository/conf/identity/application-authentication.xml中为grant_type=authorization_code调用的自定义声明处理程序所做的配置。

<ClaimHandler>com.wso2.carbon.identity.custom.claim.handler.CustomClaimHandler</ClaimHandler>

来自WSO2的调试日志:

  

TID:[ - 1234] [] [2018-04-06 11:34:38,199] DEBUG   {org.wso2.carbon.identity.auth.service.handler.HandlerManager} -   为...创建单例实例   org.wso2.carbon.identity.auth.service.handler.HandlerManager TID:   [-1234] [] [2018-04-06 11:34:38,200]调试   {org.wso2.carbon.identity.auth.service.handler.HandlerManager} - 获取   给定处理程序列表的第一优先级处理程序TID:[ - 1234] []   [2018-04-06 11:34:38,200]调查   {org.wso2.carbon.identity.auth.service.handler.HandlerManager} - 获取   优先处理程序:   DefaultAuthenticationManager(org.wso2.carbon.identity.auth.service.AuthenticationManager)   TID:[ - 1234] [] [2018-04-06 11:34:38,205] DEBUG   {org.wso2.carbon.identity.oauth2.OAuth2Service} - 访问令牌   收到的客户ID EjQvbCf0pclp6eVO5lxTq23_lxQa,用户ID   userldap,范围:[openid,email]和授权类型:密码TID:   [-1234] [] [2018-04-06 11:34:38,205]调试   {} org.wso2.carbon.identity.oauth2.token.handlers.clientauth.Abs​​tractClientAuthHandler    - 可以使用客户端ID和密码进行身份验证。客户ID:EjQvbCf0pclp6eVO5lxTq23_lxQa TID:[ - 1234] [] [2018-04-06   11:34:38,205]调试   {} org.wso2.carbon.identity.oauth2.token.handlers.clientauth.Abs​​tractClientAuthHandler    - 授权类型:密码严格客户端验证设置为:null TID:[ - 1234] [] [2018-04-06 11:34:38,206] DEBUG   {org.wso2.carbon.identity.oauth2.util.OAuth2Util} - 客户   凭证是从数据库中提取的。 TID:[ - 1234] []   [2018-04-06 11:34:38,206]调查   {org.wso2.carbon.identity.oauth2.util.OAuth2Util} - 成功   使用客户端ID验证客户端:EjQvbCf0pclp6eVO5lxTq23_lxQa   TID:[ - 1234] [] [2018-04-06 11:34:38,207]调试   {org.wso2.carbon.identity.oauth2.token.AccessTokenIssuer} - Oauth App   消费者密钥验证成功:EjQvbCf0pclp6eVO5lxTq23_lxQa   TID:[ - 1234] [] [2018-04-06 11:34:38,209] DEBUG   {} org.wso2.carbon.identity.governance.listener.IdentityMgtEventListener    - 在IdentityMgtEventListener TID中调用Pre身份验证器:[ - 1234] [] [2018-04-06 11:34:38,210] DEBUG   {} org.wso2.carbon.identity.claim.metadata.mgt.dao.CacheBackedLocalClaimDAO    - 租户的本地索赔清单的缓存命中:-1234 TID:[ - 1234] [] [2018-04-06 11:34:38,210] DEBUG   {} org.wso2.carbon.identity.claim.metadata.mgt.DefaultClaimMetadataStore    - 分配的映射属性:ref来自用户存储域:PRIMARY用于声明:租户中的http://wso2.org/claims/identity/accountDisabled   :-1234 TID:[ - 1234] [] [2018-04-06 11:34:38,215]调试   {} org.wso2.carbon.identity.claim.metadata.mgt.dao.CacheBackedLocalClaimDAO    - 租户的本地索赔清单的缓存命中:-1234 TID:[ - 1234] [] [2018-04-06 11:34:38,215] DEBUG   {} org.wso2.carbon.identity.governance.listener.IdentityMgtEventListener    - 在IdentityMgtEventListener TID中调用post get user claim values:[ - 1234] [] [2018-04-06 11:34:38,215] DEBUG   {org.wso2.carbon.identity.core.util.IdentityUtil} - 同时出错   读取用户存储属性CaseInsensitiveUsername。考虑为   区分大小写。 TID:[ - 1234] [] [2018-04-06 11:34:38,215] DEBUG   {} org.wso2.carbon.identity.governance.store.InMemoryIdentityDataStore    - 从用户的缓存加载UserIdentityClaimsDO:带声明的userldap:{} TID:[ - 1234] [] [2018-04-06 11:34:38,215] DEBUG   {} org.wso2.carbon.identity.recovery.handler.AdminForcedPasswordResetHandler    - 处理事件:PRE_AUTHENTICATION TID:[ - 1234] [] [2018-04-06 11:34:38,215] DEBUG   {} org.wso2.carbon.identity.recovery.handler.AdminForcedPasswordResetHandler    - PreAuthenticate - 用户的AdminForcedPasswordResetHandler:userldap@carbon.super TID:[ - 1234] [] [2018-04-06 11:34:38,215] DEBUG   {org.wso2.carbon.identity.core.util.IdentityUtil} - 同时出错   读取用户存储属性CaseInsensitiveUsername。考虑为   区分大小写。 TID:[ - 1234] [] [2018-04-06 11:34:38,216] DEBUG   {} org.wso2.carbon.identity.recovery.handler.AccountConfirmationValidationHandler    - PreAuthenticate TID:[ - 1234] [] [2018-04-06 11:34:38,216] DEBUG {org.wso2.carbon.identity.claim.metadata.mgt.dao.CacheBackedLocalClaimDAO}    - 租户的本地索赔清单的缓存命中:-1234 TID:[ - 1234] [] [2018-04-06 11:34:38,217] DEBUG   {} org.wso2.carbon.identity.claim.metadata.mgt.DefaultClaimMetadataStore    - 分配的映射属性:来自用户存储域的accountLock:用于声明的PRIMARY:http://wso2.org/claims/identity/accountLocked in   承租人:-1234 TID:[ - 1234] [] [2018-04-06 11:34:38,218]调查   {} org.wso2.carbon.identity.claim.metadata.mgt.dao.CacheBackedLocalClaimDAO    - 租户的本地索赔清单的缓存命中:-1234 TID:[ - 1234] [] [2018-04-06 11:34:38,218] DEBUG   {} org.wso2.carbon.identity.governance.listener.IdentityMgtEventListener    - 在IdentityMgtEventListener TID中调用post get user claim values:[ - 1234] [] [2018-04-06 11:34:38,218] DEBUG   {org.wso2.carbon.identity.core.util.IdentityUtil} - 同时出错   读取用户存储属性CaseInsensitiveUsername。考虑为   区分大小写。 TID:[ - 1234] [] [2018-04-06 11:34:38,218] DEBUG   {} org.wso2.carbon.identity.governance.store.InMemoryIdentityDataStore    - 从用户的缓存加载UserIdentityClaimsDO:带声明的userldap:{} TID:[ - 1234] [] [2018-04-06 11:34:38,218] DEBUG   {} org.wso2.carbon.identity.application.common.processors.RandomPasswordProcessor    - 找不到随机密码容器TID的缓存密钥:[ - 1234] [] [2018-04-06 11:34:38,222]调试   {} org.wso2.carbon.identity.governance.listener.IdentityMgtEventListener    - 在IdentityMgtEventListener TID中调用post authenticator:[ - 1234] [] [2018-04-06 11:34:38,222] DEBUG   {} org.wso2.carbon.identity.application.common.processors.RandomPasswordProcessor    - 找不到随机密码容器TID的缓存密钥:[ - 1234] [] [2018-04-06 11:34:38,223]调试   {} org.wso2.carbon.identity.application.common.processors.RandomPasswordProcessor    - 找不到随机密码容器TID的缓存密钥:[ - 1234] [] [2018-04-06 11:34:38,223]调试   {} org.wso2.carbon.identity.oauth2.token.handlers.grant.PasswordGrantHandler    - 收到密码授权类型的令牌请求。用户名:userldap@carbon.superScope:email openid,身份验证状态:   true TID:[ - 1234] [] [2018-04-06 11:34:38,223] DEBUG   {} org.wso2.carbon.identity.oauth.callback.OAuthCallbackHandlerRegistry    - 找到了回调的OAuthCallbackHandler。类名:org.wso2.carbon.identity.oauth.callback.DefaultCallbackHandler   资源所有者:userldap@carbon.super客户端ID:   EjQvbCf0pclp6eVO5lxTq23_lxQa范围:电子邮件openid TID:[ - 1234] []   [2018-04-06 11:34:38,223]调查   {} org.wso2.carbon.identity.oauth.callback.OAuthCallbackHandlerRegistry    - 找到了回调的OAuthCallbackHandler。类名:org.wso2.carbon.identity.oauth.callback.DefaultCallbackHandler   资源所有者:userldap@carbon.super客户端ID:   EjQvbCf0pclp6eVO5lxTq23_lxQa范围:电子邮件openid TID:[ - 1234] []   [2018-04-06 11:34:38,223]调查   {org.wso2.carbon.identity.oauth2.util.OAuth2Util} - 已添加   OAuthTokenReqMessageContext到threadlocal TID:[ - 1234] []   [2018-04-06 11:34:38,223]调查   {org.wso2.carbon.identity.core.util.IdentityUtil} - 同时出错   读取用户存储属性CaseInsensitiveUsername。考虑为   区分大小写。 TID:[ - 1234] [] [2018-04-06 11:34:38,223] DEBUG   {org.wso2.carbon.identity.oauth2.util.OAuth2Util} - SP智能令牌   到期时间功能适用于租户ID:-1234和消费者密钥:   EjQvbCf0pclp6eVO5lxTq23_lxQa TID:[ - 1234] [] [2018-04-06   11:34:38,224]调试   {} org.wso2.carbon.identity.oauth2.token.handlers.grant.AbstractAuthorizationGrantHandler    - 为应用程序启用服务提供商特定的到期时间:EjQvbCf0pclp6eVO5lxTq23_lxQa。应用程序访问令牌到期时间:   null,用户访问令牌到期时间:null,刷新令牌到期时间   :null TID:[ - 1234] [] [2018-04-06 11:34:38,224] DEBUG   {} org.wso2.carbon.identity.oauth2.token.handlers.grant.AbstractAuthorizationGrantHandler    - OAuth应用程序ID:EjQvbCf0pclp6eVO5lxTq23_lxQa,访问令牌有效时间(以毫秒为单位):3600000 TID:[ - 1234] [] [2018-04-06   11:34:38,224] DEBUG {org.wso2.carbon.identity.core.util.IdentityUtil}    - 读取用户存储属性CaseInsensitiveUsername时出错。考虑为区分大小写。 TID:[ - 1234] [] [2018-04-06   11:34:38,230]调试   {} org.wso2.carbon.identity.oauth2.token.handlers.grant.AbstractAuthorizationGrantHandler    - 无限生命周期访问令牌e88de89f-70d4-33d5-b447-5cd0135fd682在缓存中找到TID:[ - 1234] [] [2018-04-06 11:34:38,230] DEBUG   {org.wso2.carbon.identity.oauth2.util.OAuth2Util} - 清除   OAuthTokenReqMessageContext TID:[ - 1234] [] [2018-04-06 11:34:38,230]   DEBUG {org.wso2.carbon.identity.oauth2.token.AccessTokenIssuer} -   发给客户端ID的访问令牌:EjQvbCf0pclp6eVO5lxTq23_lxQa   用户名:userldap@carbon.super和范围:email openid TID:   [-1234] [] [2018-04-06 11:34:38,230]调查   {org.wso2.carbon.identity.oauth2.token.AccessTokenIssuer} - 发行   客户端的ID令牌:EjQvbCf0pclp6eVO5lxTq23_lxQa TID:[ - 1234] []   [2018-04-06 11:34:38,230]调查   {} org.wso2.carbon.identity.application.common.processors.RandomPasswordProcessor    - 找不到随机密码容器TID的缓存密钥:[ - 1234] [] [2018-04-06 11:34:38,232]调试   {} org.wso2.carbon.identity.application.mgt.dao.impl.ApplicationDAOImpl    - 加载AdministradorOmnicanalidad TID的基本应用程序数据:[ - 1234] [] [2018-04-06 11:34:38,232] DEBUG   {} org.wso2.carbon.identity.application.mgt.dao.impl.ApplicationDAOImpl    - ApplicationID:21 ApplicationName:AdministradorOmnicanalidad UserName:userldap TenantDomain:carbon.super TID:[ - 1234] []   [2018-04-06 11:34:38,232]调查   {} org.wso2.carbon.identity.application.mgt.dao.impl.ApplicationDAOImpl    - 阅读申请客户21 TID:[ - 1234] [] [2018-04-06 11:34:38,233]调查   {} org.wso2.carbon.identity.application.mgt.dao.impl.ApplicationDAOImpl    - 阅读申请步骤21 TID:[ - 1234] [] [2018-04-06 11:34:38,236]调查   {} org.wso2.carbon.identity.application.mgt.dao.impl.ApplicationDAOImpl    - 阅读申请的索赔映射21 TID:[ - 1234] [] [2018-04-06 11:34:38,237]调查   {} org.wso2.carbon.identity.application.mgt.dao.impl.ApplicationDAOImpl    - 阅读应用程序的角色映射21 TID:[ - 1234] [] [2018-04-06 11:34:38,241] DEBUG {org.wso2.carbon.identity.core.util.IdentityUtil}    - 读取用户存储属性CaseInsensitiveUsername时出错。考虑为区分大小写。 TID:[ - 1234] [] [2018-04-06   11:34:38,241] DEBUG {org.wso2.carbon.identity.oauth2.dao.TokenMgtDAO}    - 检索tokenId的访问令牌:e88de89f-70d4-33d5-b447-5cd0135fd682,标志为includeExpired:false   TID:[ - 1234] [] [2018-04-06 11:34:38,244] DEBUG   {org.wso2.carbon.identity.openidconnect.DefaultIDTokenBuilder} -   使用颁发者https://localhost:9445/oauth2/token主题userldap ID   令牌生存时间3600当前时间1523032478 Nonce Value null   签名算法RS256 TID:[ - 1234] [] [2018-04-06 11:34:38,244]   DEBUG   {org.wso2.carbon.identity.openidconnect.SAMLAssertionClaimsCallback} -   将用户userldap@carbon.super的声明添加到id令牌。 TID:   [-1234] [] [2018-04-06 11:34:38,247] DEBUG   {org.wso2.carbon.identity.openidconnect.SAMLAssertionClaimsCallback} -   在缓存中找不到用户属性。试图检索属性   user userldap@carbon.super TID:[ - 1234] [] [2018-04-06 11:34:38,249]   DEBUG   {} org.wso2.carbon.identity.application.mgt.dao.impl.ApplicationDAOImpl    - 加载AdministradorOmnicanalidad TID的基本应用程序数据:[ - 1234] [] [2018-04-06 11:34:38,251] DEBUG   {} org.wso2.carbon.identity.application.mgt.dao.impl.ApplicationDAOImpl    - ApplicationID:21 ApplicationName:AdministradorOmnicanalidad UserName:userldap TenantDomain:carbon.super TID:[ - 1234] []   [2018-04-06 11:34:38,251]调查   {} org.wso2.carbon.identity.application.mgt.dao.impl.ApplicationDAOImpl    - 阅读申请客户21 TID:[ - 1234] [] [2018-04-06 11:34:38,251]调查   {} org.wso2.carbon.identity.application.mgt.dao.impl.ApplicationDAOImpl    - 阅读申请步骤21 TID:[ - 1234] [] [2018-04-06 11:34:38,255]调查   {} org.wso2.carbon.identity.application.mgt.dao.impl.ApplicationDAOImpl    - 阅读申请的申请表格21 TID:[ - 1234] [] [2018-04-06 11:34:38,256]调查   {} org.wso2.carbon.identity.application.mgt.dao.impl.ApplicationDAOImpl    - 阅读应用程序21的角色映射

如果有人可以指出我错过了什么,或者我还能尝试什么,这将是一个很大的帮助。

感谢。

2 个答案:

答案 0 :(得分:2)

是否有任何具体原因为OIDC编写自定义声明处理程序?

如果您想通过OIDC获得自定义声明,请执行以下步骤。

  1. 转到管理控制台 - &gt;声明 - &gt;添加 - >添加外部声明 - &gt;选择方言URI为http://wso2.org/oidc/claim,将自定义声明URI作为外部声明URI,映射相应的当地主张。

  2. 在OIDC方言下成功添加自定义声明后,您必须在openid范围内的注册表中提及新添加的自定义声明URI。路径如下所示。 注册表 - &gt;浏览 - &gt; / _ system / config / oidc,然后单击属性的“添加”按钮。在那里你可以看到范围值。

答案 1 :(得分:1)

声明处理程序作为身份验证框架中身份验证过程的一部分,位于Identity Server中。

使用授权授予类型时,将通过身份验证框架处理用户身份验证。这也意味着将使用自定义声明处理程序添加/修改的任何声明。

但是,当您使用密码授予类型时,用户身份验证和声明检索将通过用户所在的相应用户存储进行。由于此身份验证不会通过身份验证框架进行,因此您的自定义声明处理程序将不会使用。