Я пытаюсь использовать WSO2is в качестве поставщика услуг для Mattermost CE. Моя идея состоит в том, чтобы использовать функцию входа в социальную сеть Mattermost GitHub с WSO2is вместо GitHub.
Для этого я настроил Wso2is с поставщиком услуг Oauth, который отлично работает. Я могу пройти аутентификацию, и Маттермост принимает токен. Однако Mattermost не может войти в меня.
Покопавшись, я настоятельно рекомендую, чтобы эта проблема возникла из-за претензий. Mattermost и Wso2is не могут говорить на одном «языке». Я перепробовал множество неудачных конфигураций, особенно с http://wso2.org/oidc/claim.
Мне интересно, знает ли кто, как настроить Wso2is с Mattermost?
Для информации, это одна из моих протестированных конфигураций:
<?xml version = "1.0" encoding = "UTF-8"?><ServiceProvider>
<ApplicationName>Mattermost</ApplicationName>
<Description>test</Description>
<InboundAuthenticationConfig>
<InboundAuthenticationRequestConfigs>
<InboundAuthenticationRequestConfig>
<InboundAuthKey>Mattermost</InboundAuthKey>
<InboundAuthType>openid</InboundAuthType>
<InboundConfigType>standardAPP</InboundConfigType>
<Properties/>
</InboundAuthenticationRequestConfig>
<InboundAuthenticationRequestConfig>
<InboundAuthKey>Mattermost</InboundAuthKey>
<InboundAuthType>passivests</InboundAuthType>
<InboundConfigType>standardAPP</InboundConfigType>
<Properties/>
</InboundAuthenticationRequestConfig>
<InboundAuthenticationRequestConfig>
<InboundAuthKey>_FPI1OvbJHV_3In6kdYiQMmnIZIa</InboundAuthKey>
<InboundAuthType>oauth2</InboundAuthType>
<InboundConfigType>standardAPP</InboundConfigType>
<inboundConfiguration><![CDATA[<?xml version = "1.0" encoding = "UTF-8" standalone = "yes"?>
<oAuthAppDO>
<oauthConsumerKey>_FPI1OvbJHV_3In6kdYiQMmnIZIa</oauthConsumerKey>
<oauthConsumerSecret>tPelnXdrnQjr0cpn2pxPT9YuQkUa</oauthConsumerSecret>
<applicationName>Mattermost</applicationName>
<callbackUrl>https://team.ticoop.fr/signup/gitlab/complete</callbackUrl>
<oauthVersion>OAuth-2.0</oauthVersion>
<grantTypes>refresh_token urn:ietf:params:oauth:grant-type:saml2-bearer implicit password client_credentials iwa:ntlm authorization_code urn:ietf:params:oauth:grant-type:jwt-bearer </grantTypes>
<scopeValidators/>
<pkceSupportPlain>true</pkceSupportPlain>
<pkceMandatory>false</pkceMandatory>
<userAccessTokenExpiryTime>3600</userAccessTokenExpiryTime>
<applicationAccessTokenExpiryTime>3600</applicationAccessTokenExpiryTime>
<refreshTokenExpiryTime>84600</refreshTokenExpiryTime>
<idTokenExpiryTime>3600</idTokenExpiryTime>
<audiences/>
<bypassClientCredentials>false</bypassClientCredentials>
<requestObjectSignatureValidationEnabled>false</requestObjectSignatureValidationEnabled>
<idTokenEncryptionEnabled>false</idTokenEncryptionEnabled>
<idTokenEncryptionAlgorithm>null</idTokenEncryptionAlgorithm>
<idTokenEncryptionMethod>null</idTokenEncryptionMethod>
<backChannelLogoutUrl></backChannelLogoutUrl>
<tokenType>JWT</tokenType>
</oAuthAppDO>
]]></inboundConfiguration>
<Properties/>
</InboundAuthenticationRequestConfig>
</InboundAuthenticationRequestConfigs>
</InboundAuthenticationConfig>
<LocalAndOutBoundAuthenticationConfig>
<AuthenticationSteps/>
<AuthenticationType>default</AuthenticationType>
<alwaysSendBackAuthenticatedListOfIdPs>false</alwaysSendBackAuthenticatedListOfIdPs>
<subjectClaimUri>http://wso2.org/claims/emailaddress</subjectClaimUri>
<UseTenantDomainInUsername>false</UseTenantDomainInUsername>
<UseUserstoreDomainInRoles>true</UseUserstoreDomainInRoles>
<UseUserstoreDomainInUsername>false</UseUserstoreDomainInUsername>
<EnableAuthorization>false</EnableAuthorization>
</LocalAndOutBoundAuthenticationConfig>
<RequestPathAuthenticatorConfigs/>
<InboundProvisioningConfig>
<ProvisioningUserStore/>
<IsProvisioningEnabled>false</IsProvisioningEnabled>
<IsDumbModeEnabled>false</IsDumbModeEnabled>
</InboundProvisioningConfig>
<OutboundProvisioningConfig>
<ProvisioningIdentityProviders/>
</OutboundProvisioningConfig>
<ClaimConfig>
<RoleClaimURI/>
<LocalClaimDialect>true</LocalClaimDialect>
<IdpClaim/>
<ClaimMappings>
<ClaimMapping>
<LocalClaim>
<ClaimUri>http://wso2.org/claims/username</ClaimUri>
<claimId>0</claimId>
</LocalClaim>
<RemoteClaim>
<ClaimUri>http://wso2.org/claims/username</ClaimUri>
<claimId>0</claimId>
</RemoteClaim>
<RequestClaim>true</RequestClaim>
<MandatoryClaim>false</MandatoryClaim>
</ClaimMapping>
<ClaimMapping>
<LocalClaim>
<ClaimUri>http://wso2.org/claims/fullname</ClaimUri>
<claimId>0</claimId>
</LocalClaim>
<RemoteClaim>
<ClaimUri>http://wso2.org/claims/fullname</ClaimUri>
<claimId>0</claimId>
</RemoteClaim>
<RequestClaim>true</RequestClaim>
<MandatoryClaim>false</MandatoryClaim>
</ClaimMapping>
<ClaimMapping>
<LocalClaim>
<ClaimUri>http://wso2.org/claims/photourl</ClaimUri>
<claimId>0</claimId>
</LocalClaim>
<RemoteClaim>
<ClaimUri>http://wso2.org/claims/photourl</ClaimUri>
<claimId>0</claimId>
</RemoteClaim>
<RequestClaim>true</RequestClaim>
<MandatoryClaim>false</MandatoryClaim>
</ClaimMapping>
<ClaimMapping>
<LocalClaim>
<ClaimUri>http://wso2.org/claims/emailaddress</ClaimUri>
<claimId>0</claimId>
</LocalClaim>
<RemoteClaim>
<ClaimUri>http://wso2.org/claims/emailaddress</ClaimUri>
<claimId>0</claimId>
</RemoteClaim>
<RequestClaim>true</RequestClaim>
<MandatoryClaim>false</MandatoryClaim>
</ClaimMapping>
<ClaimMapping>
<LocalClaim>
<ClaimUri>http://wso2.org/claims/url</ClaimUri>
<claimId>0</claimId>
</LocalClaim>
<RemoteClaim>
<ClaimUri>http://wso2.org/claims/url</ClaimUri>
<claimId>0</claimId>
</RemoteClaim>
<RequestClaim>true</RequestClaim>
<MandatoryClaim>false</MandatoryClaim>
</ClaimMapping>
<ClaimMapping>
<LocalClaim>
<ClaimUri>http://wso2.org/claims/active</ClaimUri>
<claimId>0</claimId>
</LocalClaim>
<RemoteClaim>
<ClaimUri>http://wso2.org/claims/active</ClaimUri>
<claimId>0</claimId>
</RemoteClaim>
<RequestClaim>true</RequestClaim>
<MandatoryClaim>false</MandatoryClaim>
</ClaimMapping>
<ClaimMapping>
<LocalClaim>
<ClaimUri>http://wso2.org/claims/nickname</ClaimUri>
<claimId>0</claimId>
</LocalClaim>
<RemoteClaim>
<ClaimUri>http://wso2.org/claims/nickname</ClaimUri>
<claimId>0</claimId>
</RemoteClaim>
<RequestClaim>true</RequestClaim>
<MandatoryClaim>false</MandatoryClaim>
</ClaimMapping>
<ClaimMapping>
<LocalClaim>
<ClaimUri>http://wso2.org/claims/identity/emailVerified</ClaimUri>
<claimId>0</claimId>
</LocalClaim>
<RemoteClaim>
<ClaimUri>http://wso2.org/claims/identity/emailVerified</ClaimUri>
<claimId>0</claimId>
</RemoteClaim>
<RequestClaim>true</RequestClaim>
<MandatoryClaim>false</MandatoryClaim>
</ClaimMapping>
</ClaimMappings>
<AlwaysSendMappedLocalSubjectId>false</AlwaysSendMappedLocalSubjectId>
<SPClaimDialects>
<SPClaimDialect>http://wso2.org/oidc/claim</SPClaimDialect>
</SPClaimDialects>
</ClaimConfig>
<PermissionAndRoleConfig>
<Permissions/>
<RoleMappings/>
<IdpRoles/>
</PermissionAndRoleConfig>
<IsSaaSApp>false</IsSaaSApp>
</ServiceProvider>Примечание: необходимо изменить URL-адрес конфигурации Mattermost Gitlab с / ouath / на / oauth2 / для Wso2is.
Спасибо
С Уважением
Спасибо за ваш комментарий. Журнал Mattermost бесполезен. Есть только одно сообщение: «Ошибка выполнения: недопустимый адрес памяти или разыменование нулевого указателя». Согласно наиболее важным часто задаваемым вопросам, это проблема с базой данных чтения / создания: docs.mattermost.com/install/…. Эта проблема согласуется с проблемой конфигурации утверждения.





Мне не удалось решить эту проблему с помощью wso2is. Действительно, похоже, что wso2is не отправляет заявки с токеном. Более того, структура токена Git использует в качестве идентификатора целое число, а не строку. Таким образом, невозможно использовать GUID пользователя по умолчанию, сгенерированный почти для всех IAM.
Чтобы удовлетворить свои потребности, я нашел другое решение: KeyCloak. KeyCloak отлично работает и позволяет определять утверждения по коду, поэтому можно автоматически генерировать целочисленный идентификатор, необходимый для Mattermost.
С уважением,
Вы видите какие-либо ошибки в журналах Mattermost?