{"id":22009705,"url":"https://github.com/zitadel/saml","last_synced_at":"2025-04-06T16:12:39.477Z","repository":{"id":37684907,"uuid":"485712954","full_name":"zitadel/saml","owner":"zitadel","description":"A SAML 2.0 server (IdP) implementation written for Go","archived":false,"fork":false,"pushed_at":"2025-03-26T15:34:40.000Z","size":405,"stargazers_count":46,"open_issues_count":8,"forks_count":10,"subscribers_count":3,"default_branch":"main","last_synced_at":"2025-03-30T15:07:58.645Z","etag":null,"topics":["authentication","idp","saml2"],"latest_commit_sha":null,"homepage":"https://zitadel.com","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/zitadel.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2022-04-26T09:11:58.000Z","updated_at":"2025-03-26T15:33:36.000Z","dependencies_parsed_at":"2023-12-07T20:26:35.533Z","dependency_job_id":"6ecd3dd3-d1c2-4deb-a242-d8cd98414581","html_url":"https://github.com/zitadel/saml","commit_stats":null,"previous_names":[],"tags_count":22,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zitadel%2Fsaml","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zitadel%2Fsaml/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zitadel%2Fsaml/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zitadel%2Fsaml/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/zitadel","download_url":"https://codeload.github.com/zitadel/saml/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247509235,"owners_count":20950232,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["authentication","idp","saml2"],"created_at":"2024-11-30T02:10:32.037Z","updated_at":"2025-04-06T16:12:39.449Z","avatar_url":"https://github.com/zitadel.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# SAML SDK (server) for Go\n\n[![semantic-release](https://img.shields.io/badge/%20%20%F0%9F%93%A6%F0%9F%9A%80-semantic--release-e10079.svg)](https://github.com/semantic-release/semantic-release)\n[![Release](https://github.com/zitadel/saml/workflows/Release/badge.svg)](https://github.com/zitadel/saml/actions)\n[![license](https://badgen.net/github/license/zitadel/saml/)](https://github.com/zitadel/saml/blob/master/LICENSE)\n[![release](https://badgen.net/github/release/zitadel/saml/stable)](https://github.com/zitadel/saml/releases)\n[![Go Report Card](https://goreportcard.com/badge/github.com/zitadel/saml)](https://goreportcard.com/report/github.com/zitadel/saml)\n[![codecov](https://codecov.io/gh/zitadel/saml/branch/master/graph/badge.svg)](https://codecov.io/gh/zitadel/saml)\n\n## What is it\n\nThis project is a server implementation for the Security Assertion Markup Language (SAML) standard written for `Go`.\n\n## Basic Overview\n\nThe most important packages of the library:\n\u003cpre\u003e\n/pkg\n    /provider definitions and implementation of a SAML provider (Identity provider)\n        /serviceprovider definitions and implementation of a SAML user (Service provider)\n        /xml definitions of SAML xml messages\n        /checker helper to abstract the SAML standard in the processes\n        /signature implementation to handle and create SAML signature\n\u003c/pre\u003e\n\n## Features\n\nSupported SAML features:\n\n| Feature | Identity provider |\n| --- | --- | \n| POST-binding | yes |\n| Redirect-binding | yes |\n| Artifact-binding | [no](https://github.com/zitadel/zitadel/issues/3089) |\n| Request signing | yes |\n| Response signing | yes |\n| Metadata signing | yes |\n| Response encryption | [no](https://github.com/zitadel/zitadel/issues/3090) |\n| Assertion Query/Request | no |\n| Attribute Query | yes |\n| NameID Mapping | no |\n\n## Resources\n\nFor your convenience you can find the relevant standards linked below.\n\n- [Security Assertion Markup Language (SAML) V2.0 Technical Overview](http://docs.oasis-open.org/security/saml/Post2.0/sstc-saml-tech-overview-2.0.html)\n- [Assertions and Protocols for the OASIS Security Assertion Markup Language (SAML) V2.0 – Errata Composite](https://www.oasis-open.org/committees/download.php/35711/sstc-saml-core-errata-2.0-wd-06-diff.pdf)\n- [Bindings for the OASIS Security Assertion Markup Language (SAML) V2.0 – Errata Composite](https://www.oasis-open.org/committees/download.php/35387/sstc-saml-bindings-errata-2.0-wd-05-diff.pdf)\n- [Profiles for the OASIS Security Assertion Markup Language (SAML) V2.0 – Errata Composite](https://www.oasis-open.org/committees/download.php/35389/sstc-saml-profiles-errata-2.0-wd-06-diff.pdf)\n- [Metadata for the OASIS Security Assertion Markup Language (SAML) V2.0 – Errata Composite](https://www.oasis-open.org/committees/download.php/35391/sstc-saml-metadata-errata-2.0-wd-04-diff.pdf)\n- [Conformance Requirements for the OASIS Security Assertion Markup Language (SAML) V2.0 – Errata Composite](https://www.oasis-open.org/committees/download.php/35393/sstc-saml-conformance-errata-2.0-wd-04-diff.pdf)\n- [xml.com SAML Specifications](http://saml.xml.org/saml-specifications)\n- [SAML Developer Tools from Onelogin](https://www.samltool.com/online_tools.php)\n\n## Supported Go Versions\n\nFor security reasons, we only support and recommend the use of one of the latest three Go versions (:white_check_mark:)\n.  \nVersions that also build are marked with :warning:.\n\n| Version | Supported          |\n| ------- | ------------------ |\n| \u003c1.23   | :x:                |\n| 1.23    | :white_check_mark: |\n| 1.24    | :white_check_mark: |\n\n## Why another library\n\nAs of 2021 there are only few `SAML` libraries, written in `Go`, which handle server and client implementations. As\nmaintainer of [github.com/zitadel/zitadel](https://github.com/zitadel/zitadel) we are strongly committed to the general\nfield of IAM (Identity and Access Management) and as such, we need solid frameworks to implement services.\n\nThe existing libraries that we evaluated were not implementing the standard strictly. For that reason we developed this\nproject to be compliant to the standard, while still having the possibility to handle outliers.\n\nFor signing and signature verification other already existing implementations\nlike `github.com/russellhaering/goxmldsig`(for POST-binding)\nand `github.com/amdonov/xmlsig`(for redirect-binding).\n\n## Other SAML libraries\n\n[https://github.com/crewjam/saml](https://github.com/crewjam/saml)\n\nSupports both IDP and SP side, whereas the IDP side is by their own definition only rudimentary.\n\n[https://github.com/russellhaering/gosaml2](https://github.com/russellhaering/gosaml2)\n\nImplementation of SP side with no IDP side, works with a lot of identity providers, also has an implementation of the\nXML signing which is used in this library.\n\n[https://github.com/RobotsAndPencils/go-saml](https://github.com/RobotsAndPencils/go-saml)\n\nOnly SP side, developed for several specific integrations with different IDPs, not an implementation for general SAML.\n\n[https://github.com/amdonov/lite-idp](https://github.com/amdonov/lite-idp)\n\nBasic implementation of IDP side more as a standalone service, not that good to integrate into existing product.\n\n## License\n\nThe full functionality of this library is and stays open source and free to use for everyone. Visit\nour [website](https://zitadel.com) and get in touch.\n\nSee the exact licensing terms [here](./LICENSE)\n\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"\nAS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific\nlanguage governing permissions and limitations under the License.\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fzitadel%2Fsaml","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fzitadel%2Fsaml","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fzitadel%2Fsaml/lists"}