2015-05-11 21 views
1

在使用Microsoft.AspNet.Security的MVC 6 RCP 6中,我能夠使用自定義的SecurityTokenValidator。MVC 6使用OAuthBearerAuthentication

在RC Microsoft.AspNet.Security在BETA4是不存在的,所以我改變了我的代碼中使用Microsoft.AspNet.Authentication見下文:(編譯和運行,但SecurityTokenValidator永遠不會觸發

services.Configure<ExternalAuthenticationOptions>(options => 
{ 
    options.SignInScheme = OAuthBearerAuthenticationDefaults.AuthenticationScheme; 
}); 

app.UseOAuthBearerAuthentication(options => 
{   
    options.TokenValidationParameters.ValidateAudience = true; 
    options.TokenValidationParameters.ValidateIssuer = true; 
    options.TokenValidationParameters.RequireSignedTokens = false; 
    options.AuthenticationScheme = OAuthBearerAuthenticationDefaults.AuthenticationScheme; 
    options.AutomaticAuthentication = true; 
    options.SecurityTokenValidators = new List<ISecurityTokenValidator> { validator }; 
}); 

回答

0

更換與

app.UseMiddleware<OAuthBearerAuthenticationMiddleware>(new ConfigureOptions<OAuthBearerAuthenticationOptions>(options => 
{ 
options.AutomaticAuthentication = true; 
       options.SecurityTokenValidators = new List<ISecurityTokenValidator> { validator }; 
})); 
0

app.UseOAuthBearerAuthentication代碼你懂嗎?

今天occours是CustomSecurityValidationToken不火,因爲內é xception被拋出(在我的情況下,內部驗證發生在params中)。 嘗試調試通知,如果觸發'AuthenticationFailed',您將在'context'變量中找到名爲'Exception'的屬性(如果有)。

app.UseOAuthBearerAuthentication(bearer => 
     {     
      bearer.SecurityTokenValidators = new List<ISecurityTokenValidator>() { new CustomSecurityValidationToken() }; 
      bearer.AutomaticAuthentication = true; 
      bearer.Notifications = new OAuthBearerAuthenticationNotifications() 
      { 
       SecurityTokenReceived = context => 
       { 
        return Task.FromResult(0); 
       }, 
       MessageReceived = context => 
       { 
        return Task.FromResult(0); 
       }, 
       SecurityTokenValidated = context => 
       { 
        return Task.FromResult(0); 
       }, 
       AuthenticationFailed = context => 
       { 
        context.Response.Redirect("Home/Error?message=" + context.Exception.Message); 
        return Task.FromResult(0); 
       } 
      }; 
     });