2013-05-06 2 views
4

SCIM 표준은 사용자 및 그룹을 나타내는 스키마와 모든 필요한 CRUD 작업을위한 REST API를 정의하여 클라우드에서 사용자 관리를 단순화하기 위해 작성되었습니다.C# 용 SCIM (교차 도메인 아이덴티티 관리 용 시스템) 라이브러리

이전 SPML 프로토콜을 대체하기위한 것입니다.

"성숙한"C# 라이브러리가 있습니까?

내가 봤던 대부분의 물건은 자바 용이거나 그렇지 않은 것 같습니다.

업데이트 : 주석에 대한 응답으로

:

이 라이브러리는 일반적으로 형식은 다음과 같습니다 즉

User = new User; 
User.name = "name"; 
... etc ... 
User.Create; 

, 그것은 모델을 사용하여 기본 구현을 숨 깁니다 사용자. 그렇게하면 실제 프로토콜의 세부 사항에 대해 걱정할 필요가 없습니다.

+0

그냥 이미 SCIM/Java 관련 질문이 있다는 것을 지적하십시오. – nzpcmad

+0

분명히 그것은 사용자 관리를 위해 백엔드에서 사용하는 것에 달려 있습니까? SCIM은 스키마 및 REST API를 정의합니다. WebApi는 프레임 워크가 필요없는 대부분의 작업을 수행 할 수 있습니다. –

+0

REST 호출을 구현하는 일부 구현이 아닌 사용자와 같은 SCIM 객체의 생성/직렬화/직렬화 해제를 처리하는 라이브러리를 찾으려고합니까? 나는 너무나 운이 좋지 않다. 조금 놀랐다. ( – peteski

답변

4

더 나은 정보를 얻기 위해 원래의 답변을 업데이트했습니다.

Microsoft.SystemForCrossDomainIdentityManagement

최근 업데이트 프로젝트의 저자의 https://www.nuget.org/packages/Microsoft.SystemForCrossDomainIdentityManagement/

하나 :

A)이 라이브러리는 (희망) 당신이 찾고있는 무엇을해야 v1 및 v2 SCIM 객체 지원을 포함하면 라이브러리의 목적을 설명하는 블로그 게시물에 대한 귀하의 링크가 정확합니다.

http://blogs.technet.com/b/ad/archive/2015/11/23/azure-ad-helping-you-adding-scim-support-to-your-applications.aspx

은 (블로그 게시물을 읽기 전에 nuget 라이브러리를 찾을 사람들이 내가 인 것처럼 혼동되지 않도록 저자는 지금 nuget에 대한 요약이 추가되었습니다).

다음은 GET 요청 (Facebook)을 기반으로 사용자를 deserialzing하는 예제입니다. POST 전에 또는 POST하기 전에 새 사용자 객체를 쉽게 만들고 속성 등을 설정할 수 있습니다.

public static async Task GetUser() 
{ 
    var oauthToken = "123456789foo"; 
    var baseUrl = "https://www.facebook.com/company/1234567890/scim/"; 
    var userName = "[email protected]"; 

    using (var client = new HttpClient()) 
    { 
     // Set up client and configure for things like oauthToken which need to go on each request 
     client.BaseAddress = new Uri(baseUrl); 

     // Spoof User-Agent to keep Facebook happy 
     client.DefaultRequestHeaders.Add("User-Agent", "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2490.86 Safari/537.36"); 
     client.DefaultRequestHeaders.Accept.Clear(); 
     client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json")); 
     client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", oauthToken); 

     try 
     { 
      var response = await client.GetAsync($"Users?filter=userName%20eq%20%22{userName}%22"); 
      response.EnsureSuccessStatusCode(); 
      var json = await response.Content.ReadAsStringAsync(); 

      // This is the part which is using the nuget library I referenced 
      var jsonDictionary = new JavaScriptSerializer().Deserialize<Dictionary<string, object>>(json); 
      var queryResponse = new QueryResponseJsonDeserializingFactory<Core1EnterpriseUser>().Create(jsonDictionary); 
      var user = queryResponse.Resources.First();      
     } 
     catch (Exception ex) 
     { 
      // TODO: handle exception 
     } 
    } 
} 

나는 처음에 MS 하나가 아닌 Newtonsoft의 deserialzier를 사용하여 문제를 다 퉜다 :

var jsonDictionary = await Task.Factory.StartNew(() => { return JsonConvert.DeserializeObject<Dictionary<string, object>>(json); }); 

Dictionary<string, object>을 반환하지만 공장은 그것의 적절한 사용을 만들 수 없습니다.

v2의 SCIM 사양을 사용하는 경우 Core2User 또는 Core2EnterpriseUser 클래스를 사용할 수 있습니다.

또한 도서관, 난 당신이 여기 프로젝트의 저자에서 다른 조각의 (어쨌든 매우 간단 것 같다 않는 대신 그들에게 자신을 공예보다)하려는 경우 요청의 생성을 처리 할 수있는 생각 (크레이그 맥머 트리)

/* 
* SampleProvider() is included in the Service library. 
* Its SampleResource property provides a 2.0 enterprise user with values 
* set according to the samples in the 2.0 schema specification. 
*/ 
var resource = new SampleProvider().SampleResource; 

// ComposePostRequest() is an extension method on the Resource class provided by the Protocols library. 
request = resource.ComposePostRequest("http://localhost:9000"); 

이 모든 것이 도움이되기를 바랍니다. Microsoft에서 Craig McMurtry가 큰 도움을 주었기 때문에 도서관에 데려다주고 실행하는 데 많은 도움을주었습니다. 따라서 공예품을 모두 가져갈 필요가 없습니다. 내 자신의 모델 클래스.

+1

이것은 http://blogs.technet.com/b/ad/archive/2015와 관련이있다. /11/17/azure-ad-premium-now-supports-scim-2-0.aspx/https://azure.microsoft.com/en-us/documentation/articles/active-directory-scim-provisioning/ – nzpcmad

+0

nzpcmad : 당신은 이것에서 절대적으로 옳았습니다. 나는 프로젝트의 저자들과 접촉했으며, 그들과 대화를 나눌 수있었습니다. 나는 희망을 갖고 도움을주기 위해 대답을 업데이트 할 것입니다. – peteski

0

오픈 소스 프로젝트 https://github.com/PowerDMS/Owin.Scim을 평가하십시오. 나는이 개발 노력을 주도 해왔다. Microsoft가 구현 한 몇 가지 기능이 빠져 있지만 대부분의 다른 scim 영역에서는 훨씬 완벽합니다. 요구 사항에 맞는 지 확인하고 owin.scim의 미래를 구체화하는 데 도움이되는 모든 의견을 환영합니다.