Это немного сложно, так я собираюсь объяснить, что вы должны сделать.
1) Первое, что нужно использовать поставщику OAuth. Microsoft улучшает Identity Server.
Сервер идентификации предоставит вам авторизацию и аутентификацию на основе openid.
2) Сервер идентификации должен быть скомпилирован в другом проекте и будет создавать 18 таблиц в базе данных для управления пользователями и вашими клиентами.
Клиент - это приложение с доступом, например, Android-приложение, угловое приложение или сервер ресурсов. В зависимости от вашего приложения вы должны выбрать рабочий поток. В сервере личных данных вы можете выбрать между 5 из них
https://github.com/IdentityServer
Идентичность сервер 3 для ASP.NET MVC 4.5+ и сервер идентичности 4 для ASP.NET Ядра 1
Я предполагаю, что ваш сервер будет быть сервером ресурсов, поэтому, если вы сохраните учетные записи пользователей, вам необходимо зарегистрироваться 2, зарегистрироваться на сервере идентификации, а затем на вашем сервере ресурсов.
Для настройки вам ресурсов сервера и понимать связь между обоими, вы должны настроить ваш StartUp.cs с чем-то вроде этого:
public class Startup
{
public void Configuration(IAppBuilder app)
{
// Any connection or hub wire up and configuration should go here
var clientId = (string)ConfigurationManager.AppSettings["oauth2.clientid"];
var authority = (string)ConfigurationManager.AppSettings["oauth2.authority"];
app.UseIdentityServerBearerTokenAuthentication(new IdentityServerBearerTokenAuthenticationOptions
{
Authority = authority,
ValidationMode = ValidationMode.ValidationEndpoint,
RequiredScopes = new[] { clientId },
});
app.UseResourceAuthorization(new AuthorizationManager());
}
private void ConfigureOAuth()
{
var formatters = GlobalConfiguration.Configuration.Formatters;
var jsonFormatter = formatters.JsonFormatter;
var settings = jsonFormatter.SerializerSettings;
settings.Formatting = Formatting.Indented;
}
}
Когда вы предоставляете маркер, и вы называете службу по REST вы будете отправьте в свой http-заголовок следующее:
header.add («Авторизация», «Ток-ток»);
Наиболее используемый тип лексема Bearer
Этот маркер обеспечивается сервером личных данных, когда вы делаете Логгина с классом identity.client в C# дает вам удивительный инструмент, чтобы сделать самую трудную часть.
Настройка клиента:
private TokenClient GetTokenClient()
{
var clientId = (string)ConfigurationManager.AppSettings["oauth2.clientid"];
var clientSecret = (string)ConfigurationManager.AppSettings["oauth2.client-secret"];
var tokenEndPoint = (string)ConfigurationManager.AppSettings["openid.endpoints.token"];
var client = new TokenClient(
tokenEndPoint,
clientId,
clientSecret
);
return client;
}
Получение Токен:
Route("LoginOAUth")]
[HttpPost]
public async Task<TokenResponse> LoginOAUth(LoginViewModel credentials)
{
var result = await GetTokenClient().RequestResourceOwnerPasswordAsync(credentials.Correo, credentials.Password,
"offline_access AppNameExample-IdentityClient-morgan");
return result;
}
public class LoginModel
{
public string Email { get; set; }
public string Password { get; set; }
}
Этот маркер должен храниться клиентом, а также каждый раз, когда вы делаете вызов до конца указывает сервер ресурс будет делать внутренний вызов сервера Identity, чтобы проверить, действителен ли ваш токен или нет, и если ваш токен истек или нет.
В токене вы получаете 2 вида информационных областей и заявок, те области и заявки говорят вам «права на ресурсы» и данные данных пользователя, такие как идентификатор, адрес электронной почты, имя и т. Д. Чтобы прочитать эти атрибуты здесь, пример пользовательского AuthorizationAttribute:
public class AuthorizationManager : ResourceAuthorizationManager
{
public override Task<bool> CheckAccessAsync(ResourceAuthorizationContext context)
{
switch (context.Resource.First().Value)
{
case "claims":
return AuthorizeValues(context);
default:
return Nok();
}
}
Task<bool> AuthorizeValues(ResourceAuthorizationContext context)
{
switch (context.Action.First().Value)
{
case "read":
return Eval(context.Principal.HasClaim("role", "api-read"));
default:
return Nok();
}
}
}
Это действительно сложно, и я товар.Обращайте 1 месяца studuying протокол OAuth 2.0 и как работает сервер, удостоверяющий личность. Желаю вам удачи
Ваши решения будут работать только на лазурном правильном? – chobo2
Да, вы бы разместили этот материал на Azure. К счастью, для игры вокруг и изначально все эти вещи идентичны, поэтому это хороший способ попробовать. Последнее упоминание относится ко всему. –