从onelogin发出请求

时间:2018-12-19 10:41:03

标签: c# scim scim2

我们正在为应用程序编写一个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为null而失败。

我尝试按照their website中的文档在模式中添加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}"
    }
}

如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

显然,唯一的方法是检查请求是否为空。

 string id = resource.Identifier ?? HttpContext.Current.Request.Path.Substring(HttpContext.Current.Request.Path.LastIndexOf("/", StringComparison.InvariantCulture) + 1);