Аутентификация мобильных служб Azure - изменение хранилища токенов с помощью таблиц sql? - PullRequest
0 голосов
/ 28 мая 2018

В соответствии с документацией по этой главе здесь сказано, что

Аутентификация / авторизация службы приложений Azure поддерживает хранилище токенов в XDrive (который является диском, который являетсясовместно используется всеми экземплярами серверной части в рамках одного плана обслуживания приложений).Хранилище токенов находится по адресу D: \ home \ data \ .auth \ tokens на внутренней стороне.Токены зашифрованы и хранятся в зашифрованном файле для каждого пользователя.

Я предполагаю, что XDrive является хранилищем больших двоичных объектов.У меня есть свои собственные пользовательские таблицы членства в asp.net, он уже реализует внешние логины для таких как google, facebook, amazon и т. Д. С использованием MVC и веб-API.Мне интересно, смогу ли я изменить хранилище токенов и использовать эти таблицы для обеспечения целостности моего веб-приложения и мобильных приложений вместо двух отдельных решений.

Я уже ввел логин / пароль для моих существующих логинов, используя web api, и он работает нормально.поэтому, если я могу также использовать мобильные службы Azure для этого вместо активного каталога Azure.

enter image description here

1 Ответ

0 голосов
/ 29 мая 2018

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

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

[Route(".auth/login/custom")]
    public class CustomAuthController : ApiController
    {
        private MobileServiceContext db;
        private string signingKey, audience, issuer;

        public CustomAuthController()
        {
            db = new MobileServiceContext();
            signingKey = Environment.GetEnvironmentVariable("WEBSITE_AUTH_SIGNING_KEY");
            var website = Environment.GetEnvironmentVariable("WEBSITE_HOSTNAME");
            audience = $"https://{website}/";
            issuer = $"https://{website}/";
        }

        [HttpPost]
        public IHttpActionResult Post([FromBody] User body)
        {
            if (body == null || body.Username == null || body.Password == null ||
                body.Username.Length == 0 || body.Password.Length == 0)
            {
                return BadRequest(); ;
            }

            if (!IsValidUser(body))   //add your logic to verify the use
            {  

                return Unauthorized();
            }

            var claims = new Claim[]
            {
                new Claim(JwtRegisteredClaimNames.Sub, body.Username)
            };

            JwtSecurityToken token = AppServiceLoginHandler.CreateToken(
                claims, signingKey, audience, issuer, TimeSpan.FromDays(30));
            return Ok(new LoginResult()
            {
                AuthenticationToken = token.RawData,
                User = new LoginResultUser { UserId = body.Username }
            });
        }
.
...