2016-01-20 4 views
1

Приложение нашего мобильного клиента использует https: // identityserver: port/oauth2/token-сервис от Identity Server, передавая ClientID и ClientSecret с параметром grant_type как «client_credentials» для генерации доступа маркер. Сгенерированный токен доступа используется для вызова API из ESB.Получите уникальный API-идентификатор OAuth с сервера идентификации WSO2

В соответствии с реализацией ClientID и ClientSecret будут храниться в устройстве.

Например, ClientX запросил для Oauth Token, который будет иметь определенное время истечения срока действия. Может ли этот токен сделать уникальным для ClientX?

В настоящее время все предстоящие клиентские вызовы получат тот же токен доступа, который уже сформирован из запроса ClientX. Если клиент запрашивает токен очень поздно, он получит тот же самый токен с почти истечением срока.

Есть ли способ сделать этот токен уникальным для Клиента?

ответ

0

В вашем случае, если вы используете «client_credentials» в качестве типа гранта, владелец ресурса также является клиентом.

Поскольку это мобильное приложение, как только ваше мобильное приложение получит токен, оно будет использоваться до истечения срока годности, и нет необходимости его менять, поскольку мобильный принадлежит одному пользователю. Поэтому токен будет одинаковым для той же области действия до истечения срока ее действия.

Ex: приложение для мобильных телефонов BBC.

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

Вам понадобится другой токен доступа, если разные клиенты обращаются к одному и тому же API. В этом случае вы можете использовать тип гранта «PASSWORD» для уникального токена доступа.

Ex: Приобретение продукта с использованием ebay.

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

Найдите следующий блог, который поможет вам выбрать подходящую область. [1]

[1] http://wso2.com/library/articles/2014/02/securing-your-web-service-with-oauth2-using-wso2-identity-server-1/

+0

Спасибо за ответ, но не понимаю, почему «client_credentials» не предоставляет разные токены доступа? Также, если есть обмен токена обновления, почему невозможно использовать разные токены доступа для одного и того же мобильного приложения? Как вы объяснили, для разных клиентов необходимо использовать «пароль» в качестве типа гранта? – Kiruthika

0

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

Если вы хотите получить различные токены доступа для каждого пользователя, подключенного к сеансу, не используйте client_credential тип гранта.

Например, у вас есть клиент-х и клиент-у, используя client_credentials грант. Сервер идентификации (сервер авторизации) предоставит токен доступа для клиентов-x и client-y, так как это примерно , разрешающее клиентам-x и client-y для доступа к ресурсу, а не авторизации пользователя. Это означает, что любой пользователь, который у вас есть в client-x или client-y, запрашивающий access_token, может получить один (при условии, что он аутентифицирован). В противном случае пользователь, даже если аутентифицированный клиент и сервер идентификации не может получить токен доступа, если запрос поступает из client-z (client-z не зарегистрирован в сервере идентификации)

Если ваш Oauth 2.0 клиент основан на браузере, вы можете использовать неявный грант, если это сервер, вы можете использовать либо разрешение на использование, либо пароль владельца ресурса пароль.

Смежные вопросы