Skip to content

Commit

Permalink
Merge pull request #9 from AzureAD/doc-updates
Browse files Browse the repository at this point in the history
Added Wiki reference in README and removed old references
  • Loading branch information
ArvindHarinder1 authored Feb 28, 2020
2 parents 6402036 + 820d955 commit 55e69ad
Show file tree
Hide file tree
Showing 11 changed files with 9 additions and 90 deletions.
13 changes: 9 additions & 4 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ page_type: sample
languages:
- csharp
products:
- dotnet
- dotnetcore
description: SCIM provisioning reference code
urlFragment: "update-this-to-unique-url-stub"
---
Expand All @@ -23,6 +23,8 @@ Use this reference code to get started on building a [SCIM](https://docs.microso
1. Basic requirements for CRUD operations on a user and group object (also known as resources in SCIM).
2. Optional features such as filtering and pagination.

Use the repository **[Wiki](https://github.com/AzureAD/SCIMReferenceCode/wiki)** for guidance on how to use this reference.

> [!NOTE]
> This code is intended to help you get started building your SCIM endpoint and is provided "AS IS." It is intended as a reference and there is no guarantee of it being actively maintained or supported.
Expand All @@ -37,6 +39,7 @@ Use this reference code to get started on building a [SCIM](https://docs.microso
|/ServiceProviderConfig|**Retrieve service provider's SCIM configuration**<br/>The SCIM features supported by each service provider can vary. (e.g. Service Provider A supports Patch operations while Service Provider B supports Patch Operations and Schema Discovery).|

## Getting Started

The `Microsoft.SystemForCrossDomainIdentityManagement` project contains the code base for building a SCIM API. The `Microsoft.SCIM.Sample` project is there as a sample for using the project. A step by step guide for starting up with the project can be found [here](docs/get-started.md)

## Navigating the reference code
Expand All @@ -49,18 +52,19 @@ This reference code was developed as a .Net core MVC web API for SCIM provisioni
2. The **Controllers** folder contains:
* The controllers for the various SCIM endpoints. Resource controllers include HTTP verbs to perform CRUD operations on the resource (GET, POST, PUT, PATCH, DELETE).
* Controllers rely on services to perform the actions.
3. The **Services** folder contains logic for actions relating to the way resources are queried and updated.
3. The **Services** folder contains logic for actions relating to the way resources are queried and updated.
* The service methods are exposed via the IProviderService interface.
* The reference code has services to return users and groups.
* The services are based on Entity Framework and DbContext is defined by the class ScimContext.
3. The **Protocol** folder contains logic for actions relating to the way resources are returned according to the SCIM RFC such as:
4. The **Protocol** folder contains logic for actions relating to the way resources are returned according to the SCIM RFC such as:
* Returning multiple resources as a list.
* Returning only specific resources based on a filter.
* Turning a query into a list of linked lists of single filters.
* Turning a PATCH request into an operation with attributes pertaining to the value path.
* Defining the type of operation that can be used to apply changes to resource objects.

### Contents

| File/folder | Description |
|-------------------|--------------------------------------------|
| `ScimRefrenceAPI` | Sample source code. |
Expand All @@ -72,13 +76,15 @@ This reference code was developed as a .Net core MVC web API for SCIM provisioni
| `LICENSE` | The license for the sample. |

## Common scenarios

|Scenario|How-to|
|---|---|
|Enable or disable authorization|**Steps**<br/>1. Navigate to the **UsersController.cs** or **GroupController.cs** files located in **ScimReferenceApi > Controllers**.<br/>2. Comment or uncomment out the authorize command.|
|Add additional filterable attributes|**Steps**<br/>1. Navigate to the **FilterUsers.cs** or **FilterGroups.cs** files located in **ScimReferenceApi > Protocol**.<br/>2. Update the method to include the attributes that you would like to support filtering for. |
|Support additional user resource extensions|**Steps**<br/>1. Copy the **EnterpriseUser.cs** file located in **ScimReferenceApi > Schemas**.<br/>2. Rename the class to your custom extension name (e.g. customExtensionName.cs)<br/>3. Update the schema to match the desired naming convention.<br/>4. Repeat steps 1 - 3 with the **EnterpriseAttributes.cs** file (located in ScimReferenceApi > Schemas > Attributes) and update it with the attributes that you need.|

## Authorization

The SCIM standard leaves authentication and authorization relatively open. You could use cookies, basic authentication, TLS client authentication, or any of the other methods listed [here](https://tools.ietf.org/html/rfc7644#section-2). You should take into consideration security and industry best practices when choosing an authentication/authorization method. Avoid insecure methods such as username and password in favor of more secure methods such as OAuth. Azure AD supports long-lived bearer tokens (for gallery and non-gallery applications) as well as the OAuth authorization grant (for applications published in the app gallery). This reference code allows you to either turn authorization off to simplify testing, generate a bearer token, or bring your own bearer token.

**Option 1**: Turn off authorization (this should only be used for testing)
Expand All @@ -98,7 +104,6 @@ The SCIM standard leaves authentication and authorization relatively open. You c

Provided below are test cases that you can use to ensure that your SCIM endpoint is compliant with the SCIM RFC.


## Contributing to the reference code

This project welcomes contributions and suggestions! Like other open source contributions, you will need to agree to a Contributor License Agreement (CLA) declaring that you have the right to, and actually do, grant us the rights to use your contribution. For details, visit https://cla.opensource.microsoft.com.
Expand Down
Binary file removed docs/Screenshots/CloneLinkVS-2.png
Binary file not shown.
Binary file removed docs/Screenshots/CloneLinkVS.png
Binary file not shown.
Binary file removed docs/Screenshots/CloneLinkVSO.png
Binary file not shown.
Binary file removed docs/Screenshots/CloudPublish.png
Binary file not shown.
Binary file removed docs/Screenshots/CloudPublish2.png
Binary file not shown.
Binary file removed docs/Screenshots/CloudPublish3.png
Binary file not shown.
Binary file removed docs/Screenshots/Postman.png
Binary file not shown.
Binary file removed docs/Screenshots/Postman2.png
Binary file not shown.
Binary file removed docs/Screenshots/SolutionExplorer.png
Binary file not shown.
86 changes: 0 additions & 86 deletions docs/get-started.md

This file was deleted.

0 comments on commit 55e69ad

Please sign in to comment.