https://github.com/ssoready/ssoready-csharp
C# SDK for SSOReady. Add SAML + SCIM support to any C# application this afternoon.
https://github.com/ssoready/ssoready-csharp
saml scim sso
Last synced: 9 months ago
JSON representation
C# SDK for SSOReady. Add SAML + SCIM support to any C# application this afternoon.
- Host: GitHub
- URL: https://github.com/ssoready/ssoready-csharp
- Owner: ssoready
- License: mit
- Created: 2024-10-10T23:05:37.000Z (over 1 year ago)
- Default Branch: main
- Last Pushed: 2024-11-14T17:36:14.000Z (about 1 year ago)
- Last Synced: 2025-03-25T14:03:45.603Z (10 months ago)
- Topics: saml, scim, sso
- Language: C#
- Homepage: https://ssoready.com
- Size: 72.3 KB
- Stars: 5
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README

# SSOReady-CSharp: SAML & SCIM for C#
[](https://nuget.org/packages/SSOReady.Client)
`SSOReady.Client` is a C# SDK for the [SSOReady](https://ssoready.com) API.
SSOReady is a set of open-source dev tools for implementing Enterprise SSO. You
can use SSOReady to add SAML and SCIM support to your product this afternoon.
For example applications built using SSOReady C#, check out:
- [SSOReady Example App: C# ASP.NET Core with SAML](https://github.com/ssoready/ssoready-example-app-csharp-aspnetcore-saml)
## Installation
```sh
nuget install SSOReady.Client
```
## Usage
This section provides a high-level overview of how SSOReady works, and how it's possible to implement SAML and SCIM in
just an afternoon. For a more thorough introduction, visit the [SAML
quickstart](https://ssoready.com/docs/saml/saml-quickstart) or the [SCIM
quickstart](https://ssoready.com/docs/scim/scim-quickstart).
The first thing you'll do is create a SSOReady client instance:
```csharp
using SSOReady.Client;
// this loads your SSOReady API key from SSOREADY_API_KEY
var ssoready = new SSOReady.Client.SSOReady();
```
### SAML in two lines of code
SAML (aka "Enterprise SSO") consists of two steps: an _initiation_ step where
you redirect your users to their corporate identity provider, and a _handling_
step where you log them in once you know who they are.
To initiate logins, you'll use SSOReady's [Get SAML Redirect
URL](https://ssoready.com/docs/api-reference/saml/get-saml-redirect-url)
endpoint:
```csharp
// this is how you implement a "Sign in with SSO" button
var redirectResponse = await ssoready.Saml.GetSamlRedirectUrlAsync(new GetSamlRedirectUrlRequest
{
// the ID of the organization/workspace/team (whatever you call it)
// you want to log the user into
OrganizationExternalId = email.Split("@")[1]
});
// redirect the user to `redirectResponse.RedirectUrl`...
```
You can use whatever your preferred ID is for organizations (you might call them
"workspaces" or "teams") as your `OrganizationExternalId`. You configure those
IDs inside SSOReady, and SSOReady handles keeping track of that organization's
SAML and SCIM settings.
To handle logins, you'll use SSOReady's [Redeem SAML Access
Code](https://ssoready.com/docs/api-reference/saml/redeem-saml-access-code) endpoint:
```csharp
// this goes in your handler for POST /ssoready-callback
var redeemResponse = await ssoready.Saml.RedeemSamlAccessCodeAsync(new RedeemSamlAccessCodeRequest
{
SamlAccessCode = "saml_access_code_..."
});
// log the user in as `redeemResponse.Email` inside `redeemResponse.OrganizationExternalId`...
```
You configure the URL for your `/ssoready-callback` endpoint in SSOReady.
### SCIM in one line of code
SCIM (aka "Enterprise directory sync") is basically a way for you to get a list
of your customer's employees offline.
To get a customer's employees, you'll use SSOReady's [List SCIM
Users](https://ssoready.com/docs/api-reference/scim/list-scim-users) endpoint:
```csharp
var listScimUsersResponse = await ssoready.Scim.ListScimUsersAsync(
new ScimListScimUsersRequest { OrganizationExternalId = "my_custom_external_id" }
});
// create users from each scimUser
foreach (var scimUser in listScimUsersResponse.ScimUsers) {
// every scimUser has an Id, Email, Attributes, and Deleted
// ...
}
```
## Contributing
Issues and PRs are more than welcome. Be advised that this library is largely
autogenerated from [`ssoready/docs`](https://github.com/ssoready/docs). Most
code changes ultimately need to be made there, not on this repo.