Ответ 1
Ниже приведена ссылка на некоторые разумные варианты DIY http://codebetter.com/johnvpetersen/2012/04/02/making-your-asp-net-web-apis-secure/. В разделе "Токены, основанные на общедоступном/закрытом ключах", описан подход, который я использовал эффективно в прошлом и, возможно, окажу вам помощь.
В данный момент, хотя я использую http://identityserver.codeplex.com/ Thinktecture IdentityServer с токенами на предъявителя OAuth (тип гранта для владельца ресурса)... Я нахожу это очень хорошим набором кода и примеров для работы, и клиенты IOS получают токены и вызывают WebApi.
Если вы действительно должны защитить свой экран регистрации, возможно, вы можете использовать сертификаты клиентов, установленные на устройствах для аутентификации... снова служба Thinktecture могла бы помочь здесь https://identity.thinktecture.com/idsrv/docs/default.htm?RequestingatokenusingOAuth2.html. Хотя, если вы зарегистрировали процесс регистрации Каковы наилучшие методы для активации/регистрации/пароля- reset ссылок в сообщениях электронной почты с помощью nonce. подтверждения и активации электронной почты и т.д., может быть безопасно оставить общедоступным - все это зависит от ваших бизнес-требований и желаемого рабочего процесса регистрации.
Вы должны, по крайней мере, использовать SSL-уровень безопасности на уровне транспорта, но поскольку вы предлагаете безопасность на уровне сообщений, например. шифрование любых токенов очень полезно - в спецификации OAuth есть что сказать об этом http://self-issued.info/docs/draft-ietf-oauth-v2-bearer.html#mitigation.
Что касается истекающих токенов - мы, как правило, теряем токены с той же частотой, что и наша политика смены пароля; хотя сохранение сроков действия важно (чтобы минимизировать влияние кражи токенов) и учитывать баланс ваших требований. OAuth имеет концепцию токенов обновления Почему OAuth v2 имеет как доступ, так и токены обновления? Некоторые дискуссии и ссылки по этой теме здесь, мы в настоящее время не используем этот подход, поскольку Сервер ID, который мы используем, в настоящее время не поддерживает это.
Сохранение ваших жетонов в безопасности также является соображением, например. мы используем KeyChain в IOS, но также думаем о политике управления мобильными устройствами, если это возможно, как если бы эти токены или пароли были одним из устройств, которые они могли бы украсть, возможно, посмотрите на обнаружение джейлбрейка, принудительное блокирование экрана и т.д.