nextcloud / nextcloud/user_saml

SLO Request is not signed

Open
#364 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Dominant language
PHP
Stars
104
Forks
85
Avg merge
1d 15h
Merged PRs (30d)
16

Description

Steps to reproduce
  1. Set up Nextcloud with user_saml module
  2. Connect to an SAML IdP and chooes to sign the SLO request
  3. Log in and out using the SAML IdP
Expected behaviour

The SLO request should be signed by Nextcloud that IdPs which requires signed requests can handle them.

Actual behaviour

The SLO request is not signed and will be rejected by IdPs which requires signature.
See:
<samlp:LogoutRequest
xmlns:samlp="urn:oasis:names:tc:SAML:2.0:protocol"
xmlns:saml="urn:oasis:names:tc:SAML:2.0:assertion"
ID="ONELOGIN_4e7fba9ea8d435e56b57142f9d44c6bbada56fec"
Version="2.0"
IssueInstant="2019-11-26T07:17:28Z"
Destination="https://b2access.eudat.eu/saml-idp/SLO-WEB">
saml:Issuerhttps://b2drop.eudat.eu/apps/user_saml/saml/metadata</saml:Issuer>
saml:NameIDefa6e445-dc56-432d-9ffa-c39a921a2d90</saml:NameID>
samlp:SessionIndexSAMLY2lib_assert_a41de85cef47bf4bccc82f2cb53c7dc8b6062304166e82e0</samlp:SessionIndex>
</samlp:LogoutRequest>

Server configuration

Operating system: CentOS 7.3

Web server: Apache 2

Database: MariaDB

PHP version: 7.2

Nextcloud version: 16.0.6

Where did you install Nextcloud from: tar-file

List of activated apps:
Enabled:

  • accessibility: 1.2.0
  • activity: 2.9.1
  • admin_audit: 1.6.0
  • announcementcenter: 3.5.1
  • b2sharebridge: 1.1.0
  • calendar: 1.7.1
  • checksum: 0.4.3
  • cloud_federation_api: 0.2.0
  • comments: 1.6.0
  • contacts: 3.1.6
  • dav: 1.9.2
  • federatedfilesharing: 1.6.0
  • federation: 1.6.0
  • files: 1.11.0
  • files_pdfviewer: 1.5.0
  • files_rightclick: 0.15.1
  • files_sharing: 1.8.0
  • files_texteditor: 2.8.0
  • files_trashbin: 1.6.0
  • files_versions: 1.9.0
  • files_videoplayer: 1.5.0
  • firstrunwizard: 2.5.0
  • groupfolders: 4.1.4
  • logreader: 2.1.0
  • lookup_server_connector: 1.4.0
  • lrswitchboardbridge: 0.2
  • nextcloud_announcements: 1.5.0
  • notifications: 2.4.1
  • oauth2: 1.4.2
  • password_policy: 1.6.0
  • privacy: 1.0.0
  • provisioning_api: 1.6.0
  • quota_warning: 1.5.0
  • recommendations: 0.4.0
  • serverinfo: 1.6.0
  • sharebymail: 1.6.0
  • support: 1.0.0
  • survey_client: 1.4.0
  • systemtags: 1.6.0
  • theming: 1.7.0
  • twofactor_backupcodes: 1.5.0
  • updatenotification: 1.6.0
  • user_saml: 2.4.0
  • viewer: 1.2.0
  • workflowengine: 1.6.0

Nextcloud configuration:
{
"system": {
"instanceid": "REMOVED SENSITIVE VALUE",
"passwordsalt": "REMOVED SENSITIVE VALUE",
"secret": "REMOVED SENSITIVE VALUE",
"trusted_domains": [
"b2drop.eudat.eu",
],
"version": "16.0.6.1",
"datadirectory": "REMOVED SENSITIVE VALUE",
"overwrite.cli.url": "https://b2drop.eudat.eu",
"dbtype": "mysql",
"dbname": "REMOVED SENSITIVE VALUE",
"dbhost": "REMOVED SENSITIVE VALUE",
"dbtableprefix": "",
"dbuser": "REMOVED SENSITIVE VALUE",
"dbpassword": "REMOVED SENSITIVE VALUE",
"logtimezone": "UTC",
"installed": true,
"updatechecker": false,
"loglevel": 3,
"trashbin_retention_obligation": "auto, auto, auto, auto, auto, auto",
"memcache.local": "\OC\Memcache\APCu",
"mail_smtpmode": "smtp",
"mail_from_address": "REMOVED SENSITIVE VALUE",
"mail_domain": "REMOVED SENSITIVE VALUE",
"mail_smtphost": "REMOVED SENSITIVE VALUE",
"mail_smtpport": "25",
"mail_smtptimeout": 10,
"lost_password_link": "https://b2drop.eudat.eu/pwm/public/ForgottenPassword",
"htaccess.RewriteBase": "/",
"maintenance": false,
"ldapProviderFactory": "\OCA\User_LDAP\LDAPProviderFactory",
"ldapIgnoreNamingRules": false,
"theme": "b2drop",
"mysql.utf8mb4": true
},
"user_saml": {
"enabled": "yes",
"general-allow_local_accounts": "1",
"general-allow_multiple_user_back_ends": "1",
"general-idp0_display_name": "Login",
"general-login_button_text": "B2ACCESS",
"general-require_provisioned_account": "0",
"general-uid_mapping": "unity:persistent",
"general-use_saml_auth_for_desktop": "0",
"idp-entityId": "https://b2access.eudat.eu:8443/saml-idp/metadata",
"idp-singleLogoutService.url": "https://b2access.eudat.eu/saml-idp/SLO-WEB",
"idp-singleSignOnService.url": "https://b2access.eudat.eu/saml-idp/saml2idp-web",
"idp-x509cert": "REMOVED SENSITIVE VALUE",
"installed_version": "2.4.0",
"saml-attribute-mapping-displayName_mapping": "urn:oid:2.5.4.3",
"saml-attribute-mapping-email_mapping": "urn:oid:0.9.2342.19200300.100.1.3",
"security-authnRequestsSigned": "1",
"security-logoutRequestSigned": "1",
"security-logoutResponseSigned": "1",
"security-nameIdEncrypted": "0",
"security-signMetadata": "1",
"security-wantAssertionsSigned": "1",
"security-wantNameId": "1",
"security-wantXMLValidation": "1",
"sp-privateKey": "REMOVED SENSITIVE VALUE",
"sp-x509cert": "REMOVED SENSITIVE VALUE",
"type": "saml",
"types": "authentication"
},
}

Client configuration

Browser: Firefox 70.0.1

Operating system: Ubuntu 18.04

Logs
Nextcloud log (data/owncloud.log)

Nextcloud log does not provide infos on this.

Browser log
Insert your browser log here, this could for example include:

a) The javascript console log
b) The network log
c) ...

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

The issue identifies the user_saml module and the SLO logout flow; begin by reproducing logout with security-logoutRequestSigned enabled and trace where the LogoutRequest is generated. Confirm completion by checking that the outgoing request is signed and accepted by an IdP requiring signatures; no file or test is named in the report.

Written by the indexing model from the issue text.

Assessment

Tech stack
php
Domain
authentication, security
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
25/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.