더 나은 정보를 얻기 위해 원래의 답변을 업데이트했습니다.
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가 큰 도움을 주었기 때문에 도서관에 데려다주고 실행하는 데 많은 도움을주었습니다. 따라서 공예품을 모두 가져갈 필요가 없습니다. 내 자신의 모델 클래스.
그냥 이미 SCIM/Java 관련 질문이 있다는 것을 지적하십시오. – nzpcmad
분명히 그것은 사용자 관리를 위해 백엔드에서 사용하는 것에 달려 있습니까? SCIM은 스키마 및 REST API를 정의합니다. WebApi는 프레임 워크가 필요없는 대부분의 작업을 수행 할 수 있습니다. –
REST 호출을 구현하는 일부 구현이 아닌 사용자와 같은 SCIM 객체의 생성/직렬화/직렬화 해제를 처리하는 라이브러리를 찾으려고합니까? 나는 너무나 운이 좋지 않다. 조금 놀랐다. ( – peteski