OAuth etkinleştirilmiş bir uygulama konsepti için basit bir kanıt oluşturmaya çalışıyorum ancak yetki kodu uygulamasında takılıyorum. Okuduğum her yer, bir şekilde ya da başka bir şekilde gittiği gibi, aslında yetki kodu akışını kullanmıyor gibi görünüyor. Ben bilgi için aşağıdaki kaynakları kullanarak oldum:OWIN Middleware'i kullanarak Web Api'de OAuth2 Authorization_Code Flow'u nasıl uygularım?
- https://tools.ietf.org/html/draft-ietf-oauth-v2-31
- https://aaronparecki.com/articles/2012/07/29/1/oauth2-simplified
- http://www.asp.net/aspnet/overview/owin-and-katana/owin-oauth-20-authorization-server
Ben kurulum web API var ve özel bir OAuthAuthorizationServerProvider ile Owin yenileme için şifre hibe türlerini kabul belirteçleri ve bir erişim belirteci için bir yenileme belirteci değiştirme yeteneği. Bu iyi çalışıyor, ancak bir yetkilendirme koduyla istemciye yetkilendirmek ve yeniden yönlendirmek için bir tarayıcıyı sunucuya yönlendirdiğim bir senaryo oluşturmak istiyorum. Ardından istemcinin bir yenileme belirteci
'u almak için yetki kodunu gönderilmesini istiyorum. Web Sunucusu Uygulamaları altındaki ikinci bağlantıda, web api uygulamamın bir istekte bir yetkilendirme kodunu yansıtmasını sağlamaya çalışıyorum gibi http://127.0.0.1/auth?response_type=code&client_id=123&redirect_uri=http://validredirect.com&scope=access ama almaya devam bir 404.
ben şöyle Owin yapılandırılmış ettik:
var databaseContext = new AdnsfContext();
WebApp.Start(
new StartOptions("http://127.0.0.1:7000"),
appBuilder =>
{
var httpConfig = new HttpConfiguration();
httpConfig.MapHttpAttributeRoutes();
httpConfig.SuppressDefaultHostAuthentication();
httpConfig.Filters.Add(new HostAuthenticationFilter("Bearer"));
appBuilder
.UseOAuthAuthorizationServer(new OAuthAuthorizationServerOptions
{
AllowInsecureHttp = true,
ApplicationCanDisplayErrors = true,
AuthorizeEndpointPath = new PathString("/auth"),
TokenEndpointPath = new PathString("/token"),
AuthorizationCodeExpireTimeSpan = TimeSpan.FromMinutes(1),
AccessTokenExpireTimeSpan = TimeSpan.FromMinutes(1),
Provider = new AuthServerProvider(),
AuthorizationCodeProvider = new AuthorizationCodeProvider(),
RefreshTokenProvider = new RefreshTokenProvider(),
})
.UseOAuthBearerAuthentication(new OAuthBearerAuthenticationOptions
{
AuthenticationMode = Microsoft.Owin.Security.AuthenticationMode.Active,
AuthenticationType = "Bearer",
})
.UseCors(CorsOptions.AllowAll)
.UseWebApi(httpConfig);
});
Ben yetkilendirme uç noktasını etkinleştirmek için ekledik adet kimlik doğrulama sunucusu seçenekleri için özellikler şunlardır:
AuthorizeEndpointPath = new PathString("/auth"),
AuthorizationCodeExpireTimeSpan = TimeSpan.FromMinutes(1),
AuthorizationCodeProvider = new AuthorizationCodeProvider(),
AuthorizationCodeProvider benim uygulamamdaki geçersiz kılmalar istisnalar uygulamıyor, ancak şu anda kodda ayarlanmış herhangi bir kesme noktasına çarpmıyor. Unutulmaması gereken bir nokta, postacıyı auth uç noktasına vurmak için kullandığımda, HTTPAPI/2.0 için bir sunucu üstbilgisi alıyorum ki, bu uç noktasında sadece bir şey bulunmadığından farklı bir sunucu başlığı alıyorum, yani isteği gönderiyorum yanlış. Kurulumumda bir sorun olan var mı? Şimdiden teşekkürler, bunun açıkça OWIN ve OAuth'u anlamada başarısız olduğumu biliyorum.
IdentityServer mükemmel bir kaynaktı. Orijinal oauth2 spce, IdentityServer ve orijinal olarak bağladığım örnek yetkilendirme sunucusu ile birlikte, bunu anlayabildim. –
@JoshuaBelden Son çözümünüzü cevap olarak gönderebilir misiniz? Ya da en azından anlamlı kısımları? –