Служба останова ASP.NET - постоянный токен
Мы использовали SOAP-сервисы до этого момента, и мы создаем несколько новых сервисов и используем REST. Мы использовали базовую аутентификацию пользователя {Guid}/key {Guid} в наших заголовках SOAP.
Поэтому мы создаем несколько новых сервисов, и мы используем REST, создавая в Web API 2.0. Поэтому мы пытаемся решить, между простой аутентификацией пользователя/разработчика или использованием аутентификации oAuth/Token. Кажется, что многие новые сервисы используют oAuth. Мы не работаем с публичными пользователями, у нас уже есть деловые отношения с нашими клиентами, прежде чем мы настроили их на наших серверах, поэтому я не уверен, что нам нужно идти по этому маршруту. Есть ли конкретная причина, по которой мы должны перейти к oAuth в нашей ситуации?
Кроме того, если я иду oAuth, как токен сохраняется. Я читал некоторые примеры, и похоже, что в Web API уже много встроено использование OWIN. Я вижу, как создается токен, но я не думаю, что понимаю процесс. Как это сохраняется? Это в памяти, что, если я перезапущу свой сервер? Мы думали хранить его в нашей записи пользователя, но потом мы задавались вопросом, зачем использовать его, если мы просто собираем его вместе с именем пользователя и паролем.
Я не уверен, что нам нужно идти по этому маршруту. Есть ли конкретная причина, по которой мы должны перейти к oAuth в нашей ситуации?
это должно помочь fooobar.com/questions/30849/...
Как сохраняется токен?
Ну, в Web API, токены имеют срок годности, но вы можете сохранить свои жетоны с помощью RefreshTokens.
Это в памяти, что, если я перезапущу свой сервер?
Если вы перезагрузите сервер, ничего не произойдет с токеном доступа, поскольку он никогда не хранится на сервере, все, что вам нужно для аутентификации, находится в токене доступа. После отправки маркера на сервер он расшифровывает его с помощью машинного ключа и восстанавливает идентификатор пользователя (предоставил сервер авторизации и ресурсов на том же компьютере).
Если вы API-интерфейсы могут быть доступны извне, тогда вы должны обеспечить их использование с помощью OAuth (например, с помощью декоратора [Authorize] в ваших конечных точках).
После того, как вы внедрили OAuth, вы можете использовать тип типа предоставления и передавать аналогичные учетные данные, которые вы уже передаете в своих заголовках SOAP, чтобы вы не повторно выдавали кучу учетных данных своим клиентам для использования новых конечных точек API.
На стороне.Net, как только вы получите токен-носитель из службы OAuth, вам нужно будет сохранить это и передать его в заголовках авторизации каждый раз, когда вы совершаете вызов вашего API.
В С# (после того, как вы получили свой токен)
HttpWebRequest req = (HttpWebRequest)WebRequest.Create(<FQDN OF YOUR ENDPOINT>);
req.Method = "GET";
req.Headers["Authorization"] = "Bearer " + <TOKEN YOUR GOT FROM OAUTH>;
try
{
HttpWebResponse resp = (HttpWebResponse)req.GetResponse();
if (resp.StatusCode == HttpStatusCode.OK)
{
DataContractJsonSerializer ser = new DataContractJsonSerializer(typeof(<RETURN TYPE>));
<YOUR OBJECT> = (<RETURN TYPE>)ser.ReadObject(resp.GetResponseStream());
}
}
Иногда вам нужно указывать тип содержимого, в моем случае я этого не делал, но некоторые поиски могут получить все, что было исправлено для вашей конкретной настройки.
Связанные вопросы
Похожие вопросы
Посмотрите другие вопросы по меткам rest asp.net oauth asp.net-web-api2 или Задайте вопрос