Как реализовать авторизацию в веб-API MVC4?

Я создал веб-API MVC4. Но люди без авторизации также могут использовать его. Пример: люди, вводящие в адресную строку «/api/product/1», также могут получить результат. Итак, как реализовать безопасность и разрешить авторизованному лицу использовать только WEB API? Как дать авторизацию человеку, который разрешает вход в веб-API?


person Calvin Pang    schedule 06.12.2013    source источник
comment
stackoverflow.com/questions/14365373/   -  person Marthijn    schedule 06.12.2013
comment
Какой тип авторизации вы ищете? На основе учетных данных? Является ли ваш API общедоступным? Если вы хотите выполнить аутентификацию между серверами, вы можете взглянуть на аутентификацию на основе HMAC, что довольно круто. Этот ответ говорит о реализации WebAPI: stackoverflow.com/a/11782361/350933   -  person ctrlplusb    schedule 06.12.2013


Ответы (2)



вы можете использовать MVC4 AspNet.identiy.Usermanager и Microsoft.Owin.Security для аутентификации пользователя.

private IAuthenticationManager AuthenticationManager
        {
            get
            {
                return HttpContext.Current.GetOwinContext().Authentication;
            }
        }


public HttpResponseMessage Login(string username, string password)
        {
            UserManager<TenantUser> userManager=new new UserManager<TenantUser>(new UserStore<TenantUser>(YOUR DBCONTEXT));
            var user = UserManager.Find(username, password);
            if (user != null)
            {
               AuthenticationManager.SignOut(DefaultAuthenticationTypes.ApplicatioCookie);
               ClaimsIdentity identity = await UserManager.CreateIdentityAsync(user, DefaultAuthenticationTypes.ApplicationCookie);
               AuthenticationManager.SignIn(new AuthenticationProperties() { IsPersistent = true }, identity);
            }
                else
                    new HttpResponseMessage(HttpStatusCode.Forbidden) { Content = new ObjectContent<object>(new { Error = "You are not authorized to perform this action" }, Configuration.Formatters.JsonFormatter) };
       }

у меня работает....

person Nilesh Gajare    schedule 07.12.2013