Visual Studio 2013과 함께 제공되는 Web Api 2 템플릿을 사용하고 있으며 사용자 인증 등을 수행하는 일부 OWIN 미들웨어가 있습니다.
에서 OAuthAuthorizationServerOptions
발견 i를 OAuth2를 서버 14 일에 만료 토큰 밖으로 손에 설치가 있음
OAuthOptions = new OAuthAuthorizationServerOptions
{
TokenEndpointPath = new PathString("/api/token"),
Provider = new ApplicationOAuthProvider(PublicClientId,UserManagerFactory) ,
AuthorizeEndpointPath = new PathString("/api/Account/ExternalLogin"),
AccessTokenExpireTimeSpan = TimeSpan.FromDays(14),
AllowInsecureHttp = true
};
이것은 내 최신 프로젝트에 적합하지 않습니다. 사용하여 새로 고칠 수있는 수명이 짧은 bearer_tokenrefresh_token
인터넷 검색을 많이했는데 도움이되는 것을 찾을 수 없습니다.
그래서 이것은 내가 얼마나 멀리 얻을 수 있었는지입니다. 나는 이제 "WTF do I now"의 지점에 도달했습니다.
클래스 의 속성에 따라 RefreshTokenProvider
구현 하는를 작성했습니다 .IAuthenticationTokenProvider
RefreshTokenProvider
OAuthAuthorizationServerOptions
public class SimpleRefreshTokenProvider : IAuthenticationTokenProvider
{
private static ConcurrentDictionary<string, AuthenticationTicket> _refreshTokens = new ConcurrentDictionary<string, AuthenticationTicket>();
public async Task CreateAsync(AuthenticationTokenCreateContext context)
{
var guid = Guid.NewGuid().ToString();
_refreshTokens.TryAdd(guid, context.Ticket);
// hash??
context.SetToken(guid);
}
public async Task ReceiveAsync(AuthenticationTokenReceiveContext context)
{
AuthenticationTicket ticket;
if (_refreshTokens.TryRemove(context.Token, out ticket))
{
context.SetTicket(ticket);
}
}
public void Create(AuthenticationTokenCreateContext context)
{
throw new NotImplementedException();
}
public void Receive(AuthenticationTokenReceiveContext context)
{
throw new NotImplementedException();
}
}
// Now in my Startup.Auth.cs
OAuthOptions = new OAuthAuthorizationServerOptions
{
TokenEndpointPath = new PathString("/api/token"),
Provider = new ApplicationOAuthProvider(PublicClientId,UserManagerFactory) ,
AuthorizeEndpointPath = new PathString("/api/Account/ExternalLogin"),
AccessTokenExpireTimeSpan = TimeSpan.FromMinutes(2),
AllowInsecureHttp = true,
RefreshTokenProvider = new RefreshTokenProvider() // This is my test
};
이제 누군가가를 요청할 때 bearer_token
나는 지금을 보내고 refresh_token
있습니다.
이제이 refresh_token을 사용하여 새를 가져 오려면 어떻게해야합니까? bearer_token
아마도 특정 HTTP 헤더가 설정된 토큰 끝점에 요청을 보내야 할 것입니다.
입력 할 때 소리내어 생각 만하면 ... 내에서 refresh_token 만료를 처리해야합니까 SimpleRefreshTokenProvider
? 클라이언트는 어떻게 새로운 것을 얻을 수 refresh_token
있습니까?
나는 이것을 잘못 이해하고 싶지 않고 일종의 표준을 따르고 싶기 때문에 독서 자료 / 문서로 정말 할 수 있습니다.