Строго говоря, речь идёт о аутентификации, а не о авторизации. Говоря о авторизации, вы подразумеваете предоставление доступа к ресурсам пользователя А пользователем A пользователю В. Аутентификация - это же процесс удостоверения того, что пользователь А действительно пользователь А.
Если говорить о аутентификации с помощью внешних аутентифицирующих агентов (типа социальных сетей, таких как ВК), то да, это безусловно возможно.
Существует стандарт аутентификации методами OAuth2.0 от OpenID (здесь). Данный стандарт наиболее точно и полно описывает все необходимые действия при аутентифицировании пользователя на клиенте (вашем сайте) с помощью внешнего аутентифицирующего агента (например, ВК).
Данный протокол несколько переусложнён в случае, если вы используете Authorization Code Grant (см. описание здесь). Кратко опишу его упрощённую версию:
- Пользователь хочет аутентифицироваться на клиенте (вашем сайте)
- Клиент перенаправляет пользователя на внешний аутентифицирующий агент (ВК).
- Пользователь аутентифицируется и авторизует клиента на доступ к некоторым своим ресурсам (к примеру, email)
- Внешний аутентифицирующий агент перенаправляет пользователя на клиент, передаёт авторизационный код
- Клиент получает код, обменивает его у агента на токен доступа.
- Клиент запрашивает у агента информацию о клиенте с использованием токена доступа (site.com/userinfo)
- Агент возвращает информацию (к примеру, email пользователя) и клиент считает, что пришедший пользователь именно тот, чью информацию от агента он получил.
Данный протокол несколько двусмысленен, так как в некотором смысле приравнивает авторизацию ресурса и аутентификацию, однако он наиболее распространён. При использовании полного протокола OpenID Connect Basic эта неприятность несколько сглаживается. В случае, если это критично, стоит использовать сам OpenID Connect. Он уже поддерживается большим количеством сервисов.