Ставьте запросы от onelogin - PullRequest
0 голосов
/ 19 декабря 2018

Мы пишем провайдера SCIM для приложения, и он отлично работает с Azure AD.Код был реализован с использованием Microsoft.SystemForCrossDomainIdentityManagement.

Мы пытаемся поддерживать oneLogin, и создание работает нормально, но при тестировании функциональности обновления это не удалось, поскольку идентификатор указан только в запросе, а не в теле.

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);

        }
    }
}

Таким образом, метод не имеет никакого представления об идентификаторе и завершается неудачно, так как user.Identifier имеет значение null.

Я попытался добавить идентификатор в schima, следуя документациив их веб-сайте но идентификатор на самом деле является их идентификатором, а не тем, который мы им передаем.

{"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 голосов
/ 04 апреля 2019

Видимо, единственный способ - проверить запрос, если тело было пустым.

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