반응형
.NET 웹 API 2 OWIN 베어러 토큰 인증
저는 웹 API 2 서비스 아키텍처를 제 안에 구현하고 있습니다.NET 웹 응용 프로그램.요청을 사용하는 클라이언트는 mvc/asp.net 가 아닌 순수한 javascript입니다.저는 OWIN을 사용하여 웹 API 샘플로 OWIN 베어러 토큰 인증을 이 문서에 따라 활성화하려고 합니다.인증 후 인증 단계에서 누락된 점이 있는 것 같습니다.
내 로그인은 다음과 같습니다.
[HttpPost]
[AllowAnonymous]
[Route("api/account/login")]
public HttpResponseMessage Login(LoginBindingModel login)
{
// todo: add auth
if (login.UserName == "a@a.com" && login.Password == "a")
{
var identity = new ClaimsIdentity(Startup.OAuthBearerOptions.AuthenticationType);
identity.AddClaim(new Claim(ClaimTypes.Name, login.UserName));
AuthenticationTicket ticket = new AuthenticationTicket(identity, new AuthenticationProperties());
var currentUtc = new SystemClock().UtcNow;
ticket.Properties.IssuedUtc = currentUtc;
ticket.Properties.ExpiresUtc = currentUtc.Add(TimeSpan.FromMinutes(30));
DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", accessToken);
return new HttpResponseMessage(HttpStatusCode.OK)
{
Content = new ObjectContent<object>(new
{
UserName = login.UserName,
AccessToken = Startup.OAuthBearerOptions.AccessTokenFormat.Protect(ticket)
}, Configuration.Formatters.JsonFormatter)
};
}
return new HttpResponseMessage(HttpStatusCode.BadRequest);
}
돌아오다
{
accessToken: "TsJW9rh1ZgU9CjVWZd_3a855Gmjy6vbkit4yQ8EcBNU1-pSzNA_-_iLuKP3Uw88rSUmjQ7HotkLc78ADh3UHA3o7zd2Ne2PZilG4t3KdldjjO41GEQubG2NsM3ZBHW7uZI8VMDSGEce8rYuqj1XQbZzVv90zjOs4nFngCHHeN3PowR6cDUd8yr3VBLdZnXOYjiiuCF3_XlHGgrxUogkBSQ",
userName: "a@a.com"
}
그런 다음 HTTP 헤더를 설정하려고 합니다.Bearer
Angular에서 추가 요청이 있을 경우.JS는 다음과 같습니다.
$http.defaults.headers.common.Bearer = response.accessToken;
다음과 같은 API를 제공합니다.
[HttpGet]
[Route("api/account/profile")]
[Authorize]
public HttpResponseMessage Profile()
{
return new HttpResponseMessage(HttpStatusCode.OK)
{
Content = new ObjectContent<object>(new
{
UserName = User.Identity.Name
}, Configuration.Formatters.JsonFormatter)
};
}
하지만 제가 이 서비스를 어떻게 하든 '무단'입니다.내가 뭘 빠트렸나요?
베어러 + 토큰으로 헤더 'Authorization'을 설정하면 다음과 같이 해결됩니다.
$http.defaults.headers.common["Authorization"] = 'Bearer ' + token.accessToken;
각진 응용 모듈로 구성할 수 있습니다.따라서 authorization token은 모든 http 요청에 대해 헤더로 설정됩니다.
var app = angular.module("app", ["ngRoute"]);
app.run(function ($http) {
$http.defaults.headers.common.Authorization = 'Bearer ' + token.accessToken;
});
언급URL : https://stackoverflow.com/questions/19769422/net-web-api-2-owin-bearer-token-authentication
반응형
'prosource' 카테고리의 다른 글
특정 양식을 제출한 후 여러 양식에서 결합된 입력 데이터를 타사로 전송하는 Gravity Forms (0) | 2023.10.05 |
---|---|
자바스크립트에서 Array.any?와 동등한 것은 무엇입니까? (0) | 2023.10.05 |
Excel NORMINV 기능을 수행할 C# 라이브러리가 있습니까? (0) | 2023.10.05 |
사용자 지정 버튼이 있는 AngularJsng-grid (0) | 2023.10.05 |
XDocument에서 XPath를 사용하는 방법? (0) | 2023.10.05 |