Я пытаюсь придумать лучший способ сделать свою собственную проверку подлинности в нашем 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-адресов (если это так, не выполняйте аутентификацию).
Спасибо!