Таким образом, чтобы импортировать в 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 байтов вручную. Я чувствую, что это очень близко. Мне просто нужно перестроить свои ценности.