Служба останова ASP.NET - постоянный токен

Мы использовали SOAP-сервисы до этого момента, и мы создаем несколько новых сервисов и используем REST. Мы использовали базовую аутентификацию пользователя {Guid}/key {Guid} в наших заголовках SOAP.

Поэтому мы создаем несколько новых сервисов, и мы используем REST, создавая в Web API 2.0. Поэтому мы пытаемся решить, между простой аутентификацией пользователя/разработчика или использованием аутентификации oAuth/Token. Кажется, что многие новые сервисы используют oAuth. Мы не работаем с публичными пользователями, у нас уже есть деловые отношения с нашими клиентами, прежде чем мы настроили их на наших серверах, поэтому я не уверен, что нам нужно идти по этому маршруту. Есть ли конкретная причина, по которой мы должны перейти к oAuth в нашей ситуации?

Кроме того, если я иду oAuth, как токен сохраняется. Я читал некоторые примеры, и похоже, что в Web API уже много встроено использование OWIN. Я вижу, как создается токен, но я не думаю, что понимаю процесс. Как это сохраняется? Это в памяти, что, если я перезапущу свой сервер? Мы думали хранить его в нашей записи пользователя, но потом мы задавались вопросом, зачем использовать его, если мы просто собираем его вместе с именем пользователя и паролем.

0
источник поделиться
2 ответа

Я не уверен, что нам нужно идти по этому маршруту. Есть ли конкретная причина, по которой мы должны перейти к oAuth в нашей ситуации?

это должно помочь fooobar.com/questions/30849/...

Как сохраняется токен?

Ну, в Web API, токены имеют срок годности, но вы можете сохранить свои жетоны с помощью RefreshTokens.

Это в памяти, что, если я перезапущу свой сервер?

Если вы перезагрузите сервер, ничего не произойдет с токеном доступа, поскольку он никогда не хранится на сервере, все, что вам нужно для аутентификации, находится в токене доступа. После отправки маркера на сервер он расшифровывает его с помощью машинного ключа и восстанавливает идентификатор пользователя (предоставил сервер авторизации и ресурсов на том же компьютере).

0
источник

Если вы 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());
    }
}

Иногда вам нужно указывать тип содержимого, в моем случае я этого не делал, но некоторые поиски могут получить все, что было исправлено для вашей конкретной настройки.

0
источник

Посмотрите другие вопросы по меткам или Задайте вопрос