2015-09-07 2 views
0

Я создал клиентское приложение, используя JavaScript, подключенный к базе данных Firebase, где пользователь может войти в систему и сохранить/редактировать некоторые данные, хранящиеся в Firebase. Аутентификация по электронной почте и паролю используется как https://www.firebase.com/docs/web/guide/login/password.htmlДоступ к Firebase с «аутентификацией пользователя» активен с использованием Powershell

Впоследствии я хотел написать сценарий Powershell, который будет настроен с помощью «Планировщика заданий» для запуска 1 раз в день, чтения данных каждого пользователя и выполнения некоторой бизнес-логики.

Я неправильно ожидал, что вы сможете использовать белый IP-адрес своего сервера для получения полного доступа к БД.

Если я правильно понял, мне нужно использовать «Пользовательскую аутентификацию» с использованием «JSON Web Tokens (JWTs)», но для Powershell нет вспомогательных библиотек. Посмотрите на этот раздел https://www.firebase.com/docs/web/guide/login/custom.html#section-tokens-without-helpers, но мне непонятно, что нужно сделать, чтобы получить токен.

Может ли кто-нибудь дать мне несколько указателей или пример кода о том, как заставить JWT работать с Firebase/Powershell или несколькими альтернативными способами, я могу получить полный доступ к BD, используя Powershell?

Заранее спасибо

Квинт

+0

PowerShell - это .NET, не так ли? Таким образом, вы можете просто скомпилировать помощник Firebase .NET и использовать его для создания JWT. https://github.com/firebase/firebase-token-generator-dotNet –

+0

Спасибо, Фрэнк. Я, однако, не знаком с Visual Studio или как запускать .NET внутри сценариев Powershell, поэтому я все еще застрял. – Fish

ответ

0

я сделал что-то, что могло бы помочь вам ...

#region TokenGenerator 

function TokenGeneretor($secret){ 

$asm = [Reflection.Assembly]::LoadFile("D:\Firebase\FirebaseTokenGenerator.dll") 
$tokenGenerator = [Firebase.TokenGenerator]::new("$secret") 
$authPayload = New-Object "System.Collections.Generic.Dictionary``2[System.String,System.Object]" 
$authPayload.Add('uid', '1') 
$authPayload.Add('some', 'arbitrary') 
$authPayload.Add('data', 'here') 
$Option = [Firebase.TokenOptions]::new(((Get-Date).AddHours(1)),$null,$true) 
$token = $tokenGenerator.CreateToken($authPayload, $Option) 

return $token 

} 



#endregion 

TokenGeneretor -secret "123"

DLL, упоминается это код скомпилирован от https://github.com/firebase/firebase-token-generator-dotNet. Просто откройте проект в Visual Studio и скомпилируйте его. Он будет воспроизводить DLL в папке DEBUG проекта.