2016-01-19 2 views
2

Я использую метод Firebase authWithCustomToken как часть делегированного потока auth через auth0.Firebase auth с пользовательским токеном дает null uid

Auth0 дает мне JWT через его delegate call, который затем перехожу к authWithCustomToken. Firebase говорит мне, что auth был успешным и дает мне значение под authData, но это значение имеет нулевое значение как uid. AFAIK, мои правила безопасности Firebase должны использовать UID для ограничения, поэтому кажется, что что-то идет не так.

Вот authData ответ:

{ auth: { fb_id: 'auth0|555afce3f3066cf36f5ebd58' }, 
expires: 1453234943, 
token: 'eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwczovL2ZyZWVmb3JtZXJzLmF1dGgwLmNvbS8iLCJzdWIiOiJhdXRoMHw1NTVhZmNlM2YzMDY2Y2YzNmY1ZWJkNTgiLCJhdWQiOiJQaEpNNzdmVjhVbnl5Rjc3REFKQzdOM1BPRnNoZTRVYSIsImV4cCI6MTQ1MzIzNDk0MywiaWF0IjoxNDUzMTk4OTQzLCJ2IjowLCJkIjp7ImZiX2lkIjoiYXV0aDB8NTU1YWZjZTNmMzA2NmNmMzZmNWViZDU4In0sImF6cCI6InJnZ3VBc1hkT25mY0NTT1FLcTdpU3F2cDRER1ZMQTVUIn0.87DmiUn0TY0G3kpPyiJoK6d-aTKsBNlfHBHbM4R4WMk', 
uid: null, 
provider: 'custom' } 
+0

Когда вы вызываете 'authWithCustomToken', переменная' auth' содержит * точно * информацию, которая была в JWT. Проверяли ли вы, что в JWT есть свойство 'uid', которое генерирует Auth0? Также обратите внимание, что правила безопасности Firebase не требуют * наличия 'uid', это просто очень распространено. Но, например, это сообщение в блоге о auth0 с Firebase не использует 'uid': https://www.firebase.com/blog/2014-06-05-auth0-guest-blog.html –

+0

Просто быстро вопрос для разъяснения: вы сами используете Firebase/Auth0? Если да, возможно, [внедрение Firebase в качестве дополнения Auth0] (https://auth0.com/docs/server-apis/firebase) может обойти вашу проблему? Если нет, сообщите мне, и я с радостью рассмотрю вашу реализацию. –

+0

@FrankvanPuffelen - вот и все! Я не пытался понять, что uid - это просто конвенция. Для здравомыслия, хотя у меня уже был пакет auth0, который сейчас в JWT. @ KassandraPerch - Это то, что я делал, вы только получаете 'fb_id' в JWT по умолчанию. –

ответ

2

При вызове authWithCustomToken(), переменная auth содержит именно ту информацию, которая была в JWT. Если нет auth.uid, это, вероятно, потому, что Auth0 не добавил его в токен.

Обратите внимание, что правила безопасности Firebase не требуют наличие uid, это просто очень распространенный вариант. Но, к примеру, это сообщение в блоге о auth0 с Firebase не использует uid: https://www.firebase.com/blog/2014-06-05-auth0-guest-blog.html

Смежные вопросы