2014-01-31 3 views
1

Я пытаюсь придумать лучший способ сделать свою собственную проверку подлинности в нашем Java REST API с помощью рамки Джерси (v2.5.1) работает на Tomcat 7.Пользовательские проверки подлинности в Java REST API

АНИ будет доступен через наше приложение iOS. В приложении iOS мы используем аутентификацию Facebook (используя SDK для Facebook), а затем мы используем токен доступа в каждом вызове API REST.

@Provider 
@Priority(Priorities.AUTHENTICATION) 
public class AuthenticationFilter implements ContainerRequestFilter 
{ 
    @Override 
    public void filter(ContainerRequestContext requestContext) throws IOException 
    { 
     // Extract the access token from the HTTP header 
     // Look up in the database to see if we have a user with that token 
     // If there is a user found, proceed 
     // If we can't find a user, we are going to send the token to Facebook to get the user details. If the token is invalid, we throw an exception. If it is valid, we look up if we can match the Facebook details with an existing user. When we can't match, we create a new user. 
    } 
} 

Этот фильтр будет выполнен в каждом запросе API.

Мои вопросы:

  • Является ли это правильный рабочий процесс?
  • Должны ли мы связаться с Facebook каждый раз, чтобы проверить токен? Это вызовет много накладных расходов.
  • Этот фильтр выполняется для каждого запроса. Как мы можем исключить определенные URL-адреса (некоторые ресурсы не требуют проверки подлинности)? Я думал о наборе URL-адресов в классе фильтра и посмотреть, соответствует ли запрошенный URL-адрес одному из определенных общедоступных URL-адресов (если это так, не выполняйте аутентификацию).

Спасибо!

ответ

0

Я думаю, было бы лучше, если бы вы предоставили эту возможность своему пользователю: логин/логин, используя учетную запись facebook. Так что вам не нужно связываться с Facebook, если пользователь не решит войти в систему, используя свою учетную запись FB. , аутентификация должна быть основана на сеансе. информация сеанса может включать в себя пользователя, ключ сеанса, допустимый диапазон времени, возможно, и IP-адрес источника. как только пользователь успешно выполнит вход в систему, будет создан сеанс. то для каждого запроса вам нужно только проверить, действительно ли ключ сеанса действителен.

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