Лучший способ генерировать ключ API?
Пример использования
Я создаю приложение для iPhone с простой регистрацией и логином.
Когда пользователь регистрируется/регистрируется, я хочу, чтобы сервер Ruby (Sinatra) генерировал/извлекал и возвращал токен доступа для этого пользователя, который клиент iPhone затем может отправлять с каждым последующим запросом с использованием базовой проверки подлинности по протоколу HTTPS.
Я еще не внедряю OAuth 2.0, чтобы сторонние приложения могли получить доступ к серверу. Прямо сейчас, я просто строю простой внутренний API (для своего собственного, стороннего, приложения для iPhone).
Пример
В принципе, я хочу создать секретный ключ API, например Stripe's: https://manage.stripe.com/account/apikeys
Например: sk_test_NMss5Xyp42TnLD9tW9vANWMr
Какой лучший способ сделать это, скажем, в Ruby?
Ответы
Ответ 1
Ruby stdlib предоставляет целый класс генераторов случайных данных, называемых SecureRandom
. Что бы вы ни хотели, вы, вероятно, можете найти его там.
Клавиши Stripe являются по существу безопасными для URL Base64. Вы можете получить что-то очень похожее:
require 'securerandom'
p "sk_test_" + SecureRandom.urlsafe_base64
(Полоса пропускает не буквенно-цифровые символы, но это тривиально делать с gsub, если вы не хотите, чтобы в ваших ключах были дефисы.)