# Authentication\_saml stuck with "Cannot\_match\_source\_hash"

**URL:** https://discuss.tryton.org/t/authentication-saml-stuck-with-cannot-match-source-hash/9389
**Category:** System Administrator
**Tags:** authentication
**Created:** [September 18, 2026, 9:18am UTC](https://discuss.tryton.org/t/authentication-saml-stuck-with-cannot-match-source-hash/9389 "2026-09-18T09:18:38Z")
**Posts on this page:** 16
**Page:** 1

<div class="post-metadata">

### Author: ![piosystems](https://discuss-cdn.tryton.org/letter_avatar_proxy/v4/letter/p/6de8d8/32.png) [@piosystems](https://discuss.tryton.org/u/piosystems)
#### Post date: [September 18, 2026, 9:18am UTC](https://discuss.tryton.org/t/authentication-saml-stuck-with-cannot-match-source-hash/9389/1 "2026-09-18T09:18:38Z")

</div>

I have entityID = [https://erp.mydomain.com/tryton\_db\_yeqqcrtbickz/authentication/saml/keycloak/metadata](https://erp.mydomain.com/tryton_db_yeqqcrtbickz/authentication/saml/keycloak/metadata) in trytond.conf and also set my keycloak saml client’s clientId to the same value. I just can’t overcome “invalid request” message in browser with keycloak log showing “Cannot\_match\_source\_hash”. My keycloak xml is gotten from curl -k -L -o /etc/tryton/keycloak-metadata.xml “[https://keycloak.mydomain.com/realms/mydomain.com/protocol/saml/descriptor](https://keycloak.mydomain.com/realms/mydomain.com/protocol/saml/descriptor)”. I just cannot figure out what I am doing wrong. Meanwhile, regular password login to tryton works for the same service.

---

<div class="post-metadata">

### Author: ![ced](https://discuss-cdn.tryton.org/user_avatar/discuss.tryton.org/ced/32/1237_2.png) [@ced](https://discuss.tryton.org/u/ced)
#### Post date: [September 18, 2026, 9:33am UTC](https://discuss.tryton.org/t/authentication-saml-stuck-with-cannot-match-source-hash/9389/2 "2026-09-18T09:33:10Z")

</div>

> [@piosystems](#):
>
> I have entityID = [https://erp.mydomain.com/tryton\_db\_yeqqcrtbickz/authentication/saml/keycloak/metadata](https://erp.mydomain.com/tryton_db_yeqqcrtbickz/authentication/saml/keycloak/metadata) in trytond.conf

Not sure what you mean but `authentication_saml` configuration accept only local file for `metadata` and `config` keys.

---

<div class="post-metadata">

### Author: ![piosystems](https://discuss-cdn.tryton.org/letter_avatar_proxy/v4/letter/p/6de8d8/32.png) [@piosystems](https://discuss.tryton.org/u/piosystems)
#### Post date: [September 18, 2026, 11:35am UTC](https://discuss.tryton.org/t/authentication-saml-stuck-with-cannot-match-source-hash/9389/3 "2026-09-18T11:35:14Z")

</div>

I am referring to the use of authentication\_saml module ( [Authentication SAML Module — SAML authentication for Tryton](https://docs.tryton.org/latest/modules-authentication-saml/index.html)) for SSO with keycloak

---

<div class="post-metadata">

### Author: ![ced](https://discuss-cdn.tryton.org/user_avatar/discuss.tryton.org/ced/32/1237_2.png) [@ced](https://discuss.tryton.org/u/ced)
#### Post date: [September 18, 2026, 11:38am UTC](https://discuss.tryton.org/t/authentication-saml-stuck-with-cannot-match-source-hash/9389/4 "2026-09-18T11:38:22Z")

</div>

I understood that but not the sentence I quoted.

---

<div class="post-metadata">

### Author: ![piosystems](https://discuss-cdn.tryton.org/letter_avatar_proxy/v4/letter/p/6de8d8/32.png) [@piosystems](https://discuss.tryton.org/u/piosystems)
#### Post date: [September 18, 2026, 11:45am UTC](https://discuss.tryton.org/t/authentication-saml-stuck-with-cannot-match-source-hash/9389/5 "2026-09-18T11:45:33Z")

</div>

I am referring to the part of trytond.conf file, viz:

```auto
[authentication_saml]

keycloak = Keycloak Single Sign On

[authentication_saml keycloak]

entityID = https://erp.mydomain.com/tryton_db_yeqqcrtbickz/authentication/saml/keycloak/metadata

Location = https://erp.mydomain.com/tryton_db_yeqqcrtbickz/authentication/saml/keycloak/acs

metadata = /etc/tryton/keycloak-metadata.xml

login = username

```

---

<div class="post-metadata">

### Author: ![piosystems](https://discuss-cdn.tryton.org/letter_avatar_proxy/v4/letter/p/6de8d8/32.png) [@piosystems](https://discuss.tryton.org/u/piosystems)
#### Post date: [September 18, 2026, 12:28pm UTC](https://discuss.tryton.org/t/authentication-saml-stuck-with-cannot-match-source-hash/9389/6 "2026-09-18T12:28:17Z")

</div>

Any issue with the above configuration?

---

<div class="post-metadata">

### Author: ![ced](https://discuss-cdn.tryton.org/user_avatar/discuss.tryton.org/ced/32/1237_2.png) [@ced](https://discuss.tryton.org/u/ced)
#### Post date: [September 18, 2026, 12:57pm UTC](https://discuss.tryton.org/t/authentication-saml-stuck-with-cannot-match-source-hash/9389/7 "2026-09-18T12:57:52Z")

</div>

> [@piosystems](#):
>
> ```auto
> entityID = https://erp.mydomain.com/tryton_db_yeqqcrtbickz/authentication/saml/keycloak/metadata
> 
> Location = https://erp.mydomain.com/tryton_db_yeqqcrtbickz/authentication/saml/keycloak/acs
> 
> ```

Those are not part of the standard configuration.  
And you are missing the [`config` key](https://docs.tryton.org/latest/modules-authentication-saml/configuration.html#config).

---

<div class="post-metadata">

### Author: ![piosystems](https://discuss-cdn.tryton.org/letter_avatar_proxy/v4/letter/p/6de8d8/32.png) [@piosystems](https://discuss.tryton.org/u/piosystems)
#### Post date: [September 18, 2026, 2:22pm UTC](https://discuss.tryton.org/t/authentication-saml-stuck-with-cannot-match-source-hash/9389/8 "2026-09-18T14:22:45Z")

</div>

I am not using config key which is specified as optional in the documentation at [Configuration — SAML authentication for Tryton](https://docs.tryton.org/latest/modules-authentication-saml/configuration.html#config).

---

<div class="post-metadata">

### Author: ![ced](https://discuss-cdn.tryton.org/user_avatar/discuss.tryton.org/ced/32/1237_2.png) [@ced](https://discuss.tryton.org/u/ced)
#### Post date: [September 18, 2026, 2:46pm UTC](https://discuss.tryton.org/t/authentication-saml-stuck-with-cannot-match-source-hash/9389/9 "2026-09-18T14:46:51Z")

</div>

Well, maybe the default configuration of PySAML does not work with your service.

---

<div class="post-metadata">

### Author: ![piosystems](https://discuss-cdn.tryton.org/letter_avatar_proxy/v4/letter/p/6de8d8/32.png) [@piosystems](https://discuss.tryton.org/u/piosystems)
#### Post date: [September 18, 2026, 4:44pm UTC](https://discuss.tryton.org/t/authentication-saml-stuck-with-cannot-match-source-hash/9389/10 "2026-09-18T16:44:38Z")

</div>

I have taken a closer look by decoding the SAML Request sent. E.g.

[https://keycloak.mydomain.com/realms/mydomain.com/protocol/saml?SAMLRequest=rZJRS8MwFIX%2FSsl7126D4sJWqE7ZZLJiq4gvI02jC22SLvdWrL%2FerHMTFfbk4z2cE75zb6YaQpq0uNX3YtcKQO9d1Rqok2ektZoaBtKNTAmgyGmW3K3oaBDSxho03NTkFBieDzAAYVEaTbzlfEZk6dunIkvWk8U1zvM0wtuIeI%2FCgrPMiEs4H0ArlhqQaXRSOIr8cOIPL%2FJhREcRHY%2BfiTd3zFIz7FNbxAZoEFSi47Vh1aARrNoyq4zuBtyowApWKwh%2By8cyATDlGqVf46XUpdSv53sVBxPQRZ6nfrrOcuIlx65XRkOrhM2EfZNcPNyvDpCOUdjmDx7aDo3elMWmE7sdt1hIXn0EzN1HaJS8r9lDnioGjAOJp279tF%2BX9W6MVQzPQ%2B8Vd4GX3kr3b2NH4n8mUwJZyZBNg2%2B6eD%2F8%2FHHxJw%3D%3D&RelayState=http%3A%2F%2Ferp.mydomain.com.com](https://keycloak.mydomain.com/realms/mydomain.com/protocol/saml?SAMLRequest=rZJRS8MwFIX%2FSsl7126D4sJWqE7ZZLJiq4gvI02jC22SLvdWrL%2FerHMTFfbk4z2cE75zb6YaQpq0uNX3YtcKQO9d1Rqok2ektZoaBtKNTAmgyGmW3K3oaBDSxho03NTkFBieDzAAYVEaTbzlfEZk6dunIkvWk8U1zvM0wtuIeI%2FCgrPMiEs4H0ArlhqQaXRSOIr8cOIPL%2FJhREcRHY%2BfiTd3zFIz7FNbxAZoEFSi47Vh1aARrNoyq4zuBtyowApWKwh%2By8cyATDlGqVf46XUpdSv53sVBxPQRZ6nfrrOcuIlx65XRkOrhM2EfZNcPNyvDpCOUdjmDx7aDo3elMWmE7sdt1hIXn0EzN1HaJS8r9lDnioGjAOJp279tF%2BX9W6MVQzPQ%2B8Vd4GX3kr3b2NH4n8mUwJZyZBNg2%2B6eD%2F8%2FHHxJw%3D%3D&RelayState=http%3A%2F%2Ferp.mydomain.com.com)

The https is unexpectedly replaced by http as shown in the decoded equivalent below …

`<ns0:AuthnRequest xmlns:ns0="urn:oasis:names:tc:SAML:2.0:protocol" xmlns:ns1="urn:oasis:names:tc:SAML:2.0:assertion" ID="id-rXbSAO9HEtDTP6tJ6" Version="2.0" IssueInstant="2026-09-18T16:26:33Z" Destination="``https://keycloak.peakharmony.com/realms/mydomain.com/protocol/saml``" ProtocolBinding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST" AssertionConsumerServiceURL="``http://erp.mydomain.com/tryton_db_yeqqcrtbickz/authentication/saml/keycloak/acs``" > <ns1:Issuer Format="urn:oasis:names:tc:SAML:2.0:nameid-format:entity">``http://erp.mydomain.com/tryton_db_yeqqcrtbickz/authentication/saml/keycloak/metadata``</ns1:Issuer> </ns0:AuthnRequest>`

If I then set the clientId in the keycloak saml service to

`http://erp.mydomain.com/tryton_db_yeqqcrtbickz/authentication/saml/keycloak/metadata`  
and set redirect uri to

`http://erp.mydomain.com/tryton_db_yeqqcrtbickz/authentication/saml/keycloak/acs`

keycloak login appears correctly. Unfortunately after login, it will redirect to the http and not https. The real issue is thus why https is replaced by http in the SAML Request, that leads to the mismatch. I am yet to experiment with the optional [config](https://docs.tryton.org/latest/modules-authentication-saml/configuration.html#config)key involving PySAML.

---

<div class="post-metadata">

### Author: ![ced](https://discuss-cdn.tryton.org/user_avatar/discuss.tryton.org/ced/32/1237_2.png) [@ced](https://discuss.tryton.org/u/ced)
#### Post date: [September 18, 2026, 5:41pm UTC](https://discuss.tryton.org/t/authentication-saml-stuck-with-cannot-match-source-hash/9389/11 "2026-09-18T17:41:01Z")

</div>

It is because you did not set the tryton configuration [`[ssl] certificate`](https://docs.tryton.org/latest/server/topics/configuration.html#certificate).

---

<div class="post-metadata">

### Author: ![piosystems](https://discuss-cdn.tryton.org/letter_avatar_proxy/v4/letter/p/6de8d8/32.png) [@piosystems](https://discuss.tryton.org/u/piosystems)
#### Post date: [September 19, 2026, 10:08am UTC](https://discuss.tryton.org/t/authentication-saml-stuck-with-cannot-match-source-hash/9389/12 "2026-09-19T10:08:14Z")

</div>

Adding the following to trytond.conf fixed the https issue. Thank you.

```auto

[ssl]

certificate = /usr/local/share/ca-certificates/ca.mydomain.com.crt

privatekey = true

```

The following are not required in trytond.conf.

entityID = [https://erp.mydomain.com/tryton\_db\_yeqqcrtbickz/authentication/saml/keycloak/metadata](https://erp.mydomain.com/tryton_db_yeqqcrtbickz/authentication/saml/keycloak/metadata)

Location = [https://erp.mydomain.com/tryton\_db\_yeqqcrtbickz/authentication/saml/keycloak/acs](https://erp.mydomain.com/tryton_db_yeqqcrtbickz/authentication/saml/keycloak/acs)

---

<div class="post-metadata">

### Author: ![ced](https://discuss-cdn.tryton.org/user_avatar/discuss.tryton.org/ced/32/1237_2.png) [@ced](https://discuss.tryton.org/u/ced)
#### Post date: [September 19, 2026, 10:10am UTC](https://discuss.tryton.org/t/authentication-saml-stuck-with-cannot-match-source-hash/9389/13 "2026-09-19T10:10:29Z")

</div>

> [@piosystems](#):
>
> `certificate = /usr/local/share/ca-certificates/ca.mydomain.com.crt`

You do not need to set to any path, just true or unset it (only one of `certificate` or `privatekey` needs to be `true`).

---

<div class="post-metadata">

### Author: ![piosystems](https://discuss-cdn.tryton.org/letter_avatar_proxy/v4/letter/p/6de8d8/32.png) [@piosystems](https://discuss.tryton.org/u/piosystems)
#### Post date: [September 19, 2026, 10:13am UTC](https://discuss.tryton.org/t/authentication-saml-stuck-with-cannot-match-source-hash/9389/14 "2026-09-19T10:13:14Z")

</div>

I first set only `certificate = true` and the problem was not solved.

---

<div class="post-metadata">

### Author: ![system](https://discuss-cdn.tryton.org/uploads/default/original/1X/c6f8ec0a40525cdcd50058c734283450a4b3d38b.png) [@system](https://discuss.tryton.org/u/system)
#### Post date: [September 20, 2026, 10:14am UTC](https://discuss.tryton.org/t/authentication-saml-stuck-with-cannot-match-source-hash/9389/15 "2026-09-20T10:14:01Z")

</div>

This topic was automatically closed 24 hours after the last reply. New replies are no longer allowed.

---

<div class="post-metadata">

### Author: ![nicoe](https://discuss-cdn.tryton.org/user_avatar/discuss.tryton.org/nicoe/32/2880_2.png) [@nicoe](https://discuss.tryton.org/u/nicoe)
#### Post date: [September 20, 2026, 8:07pm UTC](https://discuss.tryton.org/t/authentication-saml-stuck-with-cannot-match-source-hash/9389/16 "2026-09-20T20:07:48Z")

</div>

What made you believe that those keys exists in `trytond.conf` ?

I think that if people want to customize this (I don’t know why they would but I am not very knowledgeable about SAML) they need to use a specific configuration file specified in `config` as it allows to override the settings used by the SAML client.
