Аутентификация токена на поддомене Web Api 2
Я создаю сайт, используя AngularJS и готовый шаблон аутентификации токена WebApi2 (индивидуальные учетные записи пользователей). Я пытаюсь получить доступ к двум сайтам одновременно, один на www.domain.com, а другой на sub.domain.com
В настоящее время я использую следующий код в angular для аутентификации пользователя:
$http({
method: 'POST',
url: '/Token',
data: serializedData,
headers: {
'Content-Type': 'application/x-www-form-urlencoded'
}
}).success(function (data, status, headers, config) {
$window.sessionStorage.token = data.access_token;
});
и добавьте заголовок авторизации для каждого запроса после:
app.factory('authInterceptor', function ($rootScope, $q, $window) {
return {
request: function (config) {
config.headers = config.headers || {};
if ($window.sessionStorage.token) {
$window.sessionStorage.loggedIn = true;
config.headers.Authorization = 'Bearer ' + $window.sessionStorage.token;
}
return config;
}
};
});
app.config(function ($httpProvider) {
$httpProvider.interceptors.push('authInterceptor');
});
Приведенный выше код позволяет каждому сайту войти в систему индивидуально, однако сессия сеанса не сохраняется в других окнах / вкладках, поэтому пользователь не будет входить в поддомен.
В этом сообщении есть некоторые комментарии по этой проблеме (на полпути вниз): http://blog.auth0.com/2014/01/07/angularjs-authentication-with-cookies-vs-token/
Однако это кажется слишком сложным для реализации (и приводит к нежелательному эффекту перенаправления пользователя). Я надеялся на что-то такое же простое, как установка домена, как с куки:
app.UseCookieAuthentication(new CookieAuthenticationOptions()
{
CookieDomain = ".domain.com"
});
Я начинаю сомневаться в том, что в текущем сценарии я должен использовать проверку подлинности токена по файлам cookie...
1 ответ
Это было объяснено в последующем сообщении: локальное / сессионное хранилище не будет работать между доменами, используйте маркерный cookie.
Вы можете создать печенье для .domain.com
из JavaScript для хранения токена. Файлы cookie, локальное хранилище и хранилище сеансов - это то, как браузер должен хранить информацию:
... мы не используем куки как механизм аутентификации, просто как механизм хранения, который поддерживает хранение информации в разных доменах.