从 onelogin 发出请求
Put requests from onelogin
我们正在为应用程序编写 SCIM 提供程序,它可以与 Azure AD 一起正常工作。
该代码已使用 Microsoft.SystemForCrossDomainIdentityManagement.
实现
我们正在尝试支持 oneLogin 并且创建工作正常,但是在测试更新功能时它失败了,因为 Id 仅在请求中而不在正文中。
public class MyProvider : ProviderBase, IProvider
{
public override Task<Resource> ReplaceAsync(Resource resource, string correlationIdentifier)
{
switch (resource)
{
case Core2User user:
var existingUser = GetUser(applicationId, user.Identifier);
}
}
}
因此,该方法对 ID 没有任何想法并且失败,因为 user.Identifier 为空。
我尝试按照 their website 中的文档在 schima 中添加 id,但该 id 实际上是他们的 id,而不是我们传递给他们的 id。
{"schemas":["urn:ietf:params:scim:schemas:core:2.0:User"],
"active": "{$user.status}",
"emails": {
"value": "{$user.email}",
"type": "work",
"primary": true
},
"userName":"{$parameters.scimusername}",
"id": "{$user.id}",
"name": {
"givenName": "{$user.firstname}",
"familyName": "{$user.lastname}",
"formatted": "{$user.display_name}"
}
}
如何解决?
显然唯一的方法是检查请求正文是否为空。
string id = resource.Identifier ?? HttpContext.Current.Request.Path.Substring(HttpContext.Current.Request.Path.LastIndexOf("/", StringComparison.InvariantCulture) + 1);
我们正在为应用程序编写 SCIM 提供程序,它可以与 Azure AD 一起正常工作。 该代码已使用 Microsoft.SystemForCrossDomainIdentityManagement.
实现我们正在尝试支持 oneLogin 并且创建工作正常,但是在测试更新功能时它失败了,因为 Id 仅在请求中而不在正文中。
public class MyProvider : ProviderBase, IProvider
{
public override Task<Resource> ReplaceAsync(Resource resource, string correlationIdentifier)
{
switch (resource)
{
case Core2User user:
var existingUser = GetUser(applicationId, user.Identifier);
}
}
}
因此,该方法对 ID 没有任何想法并且失败,因为 user.Identifier 为空。
我尝试按照 their website 中的文档在 schima 中添加 id,但该 id 实际上是他们的 id,而不是我们传递给他们的 id。
{"schemas":["urn:ietf:params:scim:schemas:core:2.0:User"],
"active": "{$user.status}",
"emails": {
"value": "{$user.email}",
"type": "work",
"primary": true
},
"userName":"{$parameters.scimusername}",
"id": "{$user.id}",
"name": {
"givenName": "{$user.firstname}",
"familyName": "{$user.lastname}",
"formatted": "{$user.display_name}"
}
}
如何解决?
显然唯一的方法是检查请求正文是否为空。
string id = resource.Identifier ?? HttpContext.Current.Request.Path.Substring(HttpContext.Current.Request.Path.LastIndexOf("/", StringComparison.InvariantCulture) + 1);