Импорт пользователей .net в firebase - PullRequest
1 голос
/ 03 июня 2019

Таким образом, чтобы импортировать в firebase, вам понадобятся хэши, чтобы правильно декодировать пароль. Мы используем пакет безопасности Microsoft Owen от asp.net. У меня есть настройка machineKey в webconfig (я предполагаю, что это ключ hmac, который мне нужно предоставить?)

<machineKey validationKey="<key>" decryptionKey="<decodeKey>" validation="HMACSHA256" />

и в стартапе это просто

   public void ConfigureOAuth(IAppBuilder app)
        {
            OAuthAuthorizationServerOptions OAuthServerOptions = new OAuthAuthorizationServerOptions()
            {   
                TokenEndpointPath = new PathString("/token"),                
                AccessTokenExpireTimeSpan = TimeSpan.FromDays(1),                
#if DEBUG
                AllowInsecureHttp = true,
#endif
                Provider = new SimpleAuthorizationServerProvider()                
            };

            // Token Generation
            app.UseOAuthAuthorizationServer(OAuthServerOptions);            
            app.UseOAuthBearerAuthentication(new OAuthBearerAuthenticationOptions());


        }

Для импорта в Firebase я использую (это пользователь базы данных, так что все в порядке, я показываю хэш)

let userImportRecords = [
    {
        uid: 'afd698c4-4172-49f1-a6c4-77d175efbc1c',
        email: '<usersEmail>',     
        passwordHash: Buffer.from('APwDZFRV6tnEREBsmECj2LMkgUZAqfOAb9/u0nMra5WrHgVG0F7ggFQABt0Qdtsw3w=='),
        passwordSalt: Buffer.from('APwDZFRV6tnEREBs')
    }
];



var admin = require("firebase-admin");

var serviceAccount = require("./socket-server/serviceAccountKey.json");

admin.initializeApp({
  credential: admin.credential.cert(serviceAccount),
  databaseURL: "<DB URL>"
});


admin.auth().importUsers(userImportRecords, {
    hash: {
        algorithm: 'PBKDF2_SHA256',
        rounds: 10000,
        saltSeparator: 16,
        // Must be provided in a byte buffer.
        key: Buffer.from('<webconfig machine decryptionKey key?>')
    }
});

Это импортирует, но пароль не работает. Я предполагаю, что что-то не так с тем, как у меня есть соль и / или хэш-ключ. Я не видел в документации asp.net, где он устанавливает ключ, но я знаю, что у меня есть настройка machineKey, поэтому я предполагаю, что это то, что он использует. (у нас есть другой сервер, который сам проверяет токены)

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

...