Как подключить SDK для мобильных устройств (iOS) App ID к веб-приложению Kitura?

Что я пытаюсь сделать: создать защищенную конечную точку Kitura и получить к ней доступ из приложения iOS, используя идентификатор приложения.

Мне удалось настроить идентификатор приложения на сервере Kitura, чтобы я мог войти в систему и затем успешно получить доступ к защищенной конечной точке.

Я могу войти в демонстрационное приложение iOS, используя тот же TenantId, что и сервер Kitura, и получить токены. То есть я могу успешно войти в систему, но когда я использую необработанный токен аутентификации, я не могу получить доступ к защищенной конечной точке на сервере из приложения iOS.

Я пробовал, используя почтальона, установить заголовок:

Авторизация = [sessionToken]

Я пытался:

Авторизация = носитель [sessionToken]

Я пробовал это в демонстрационном приложении после получения токенов:

BMSClient.sharedInstance.initialize(bluemixRegion: AppID.REGION_UK)
BMSClient.sharedInstance.authorizationManager = AppIDAuthorizationManager(appid:AppID.sharedInstance)
var request:Request =  Request(url: "<your protected resource url>")
request.send(completionHandler: {(response:Response?, error:Error?) in
    //code handling the response here
})

надеясь, что, возможно, я неправильно установил токен в Postman, и он выполнит правильный запрос.

Но независимо от того, что я делаю, каждый раз, когда я запрашиваю защищенный API из приложения iOS, я получаю в ответ HTML-код входа.

Что мне не хватает? Почему я не могу получить доступ к частной конечной точке с помощью токена сеанса приложения iOS?


person Stanislav Goryachev    schedule 07.01.2018    source источник


Ответы (1)


К сожалению, текущая версия Server Swift SDK для службы IBM Cloud App ID не поддерживает стратегию API. Это означает, что вы не можете защитить отдельные REST API. Вы можете защитить только веб-приложения.

person vitalym    schedule 09.01.2018
comment
Хорошо, если я правильно понимаю, в этом случае мне действительно не нужен идентификатор приложения на сервере Kitura (поскольку у меня нет веб-приложения), мне просто нужно войти в систему на iPhone с помощью SDK идентификатора приложения, передать токен с запросами в бэкэнд Kitura, и там мое собственное промежуточное ПО для проверки токена JWT по запросу? - person Stanislav Goryachev; 09.01.2018
comment
Да, ты можешь это сделать. Для проверки токенов рекомендуется использовать криптографическую библиотеку, но если вы не можете найти ее для Китуры, можно использовать конечную точку самоанализа (appid-oauth.ng.bluemix.net/swagger-ui / #! /). Допустимые токены должны храниться в кеше, чтобы снизить нагрузку на сервер авторизации. Простой пример (без использования кеша) можно найти здесь: github.com/mnsn/appid-python-flask-example/tree/master/ - person vitalym; 10.01.2018
comment
Спасибо за объяснения и примеры! - person Stanislav Goryachev; 11.01.2018