Immer die "Berechtigung verweigert wurde, für diese Anfrage." - Meldung
Ich bin in der Lage, erfolgreich abrufen von token, aber wenn Sie versuchen, zu authentifizieren, über die token bekomme ich immer die Authorization has been denied for this request
Nachricht.
Meine Startup.cs
- Datei enthält die folgenden Methoden
public void Configuration(IAppBuilder app)
{
var config = new HttpConfiguration();
WebApiConfig.Register(config);
app.UseWebApi(config);
ConfigureOAuth(app);
var jsonFormatter = config.Formatters.OfType<JsonMediaTypeFormatter().First();
jsonFormatter.SerializerSettings
.ContractResolver = new CamelCasePropertyNamesContractResolver();
}
private void ConfigureOAuth(IAppBuilder app)
{
var oAuthServerOptions = new OAuthAuthorizationServerOptions()
{
AllowInsecureHttp = true,
TokenEndpointPath = new PathString("/Token"),
AccessTokenExpireTimeSpan = TimeSpan.FromDays(1),
Provider = new DefaultAuthorizationServerProvider()
};
app.UseOAuthAuthorizationServer(oAuthServerOptions);
app.UseOAuthBearerAuthentication(new OAuthBearerAuthenticationOptions());
}
Den DefaultAuthorizationServerProvider.cs
- Klasse enthält die folgenden
public class DefaultAuthorizationServerProvider : OAuthAuthorizationServerProvider
{
public override async Task ValidateClientAuthentication
(
OAuthValidateClientAuthenticationContext context
)
{
context.Validated();
}
public override async Task GrantResourceOwnerCredentials
(
OAuthGrantResourceOwnerCredentialsContext context
)
{
context.OwinContext.Response.Headers.Add("Access-Control-Allow-Origin", new[] { "*" });
var identityManager = new IdentityManager();
var identity = identityManager.Get(context.UserName, context.Password,
new IpAddressProvider().Provide(IpAddressType.Forwarding));
if (identity == null)
{
context.SetError("invalid_grant", "Authentication failed. Please make sure you provided the correct username and password.");
}
else
{
identity.AddClaim(new Claim(ClaimTypes.Role, "User"));
context.Validated(identity);
}
}
}
Und die IdentityManager.cs
Klasse haben die folgenden
public class IdentityManager : IIdentityManager
{
public virtual ClaimsIdentity Get
(
string username,
string password,
string ipAddress
)
{
var authenticateUserWorkflowOutput = new AuthenticateUserWorkflowHelper().Execute
(
new AuthenticateUserWorkflowInput
{
Username = username,
Password = password,
IpAddress = ipAddress
},
new AuthenticateUserWorkflowState()
);
if (authenticateUserWorkflowOutput.Message.Exception != null)
{
return null;
}
if (!authenticateUserWorkflowOutput.Authenticated)
{
return null;
}
return authenticateUserWorkflowOutput.User != null ? new Infrastructure.Identity(new[]
{
new Claim(ClaimTypes.Name, authenticateUserWorkflowOutput.MasterUser.EmailAddress),
}, "ApplicationCookie") : null;
}
}
Mit Fiddler kann ich erfolgreich abrufen eines Tokens
Aber wenn ich versuche, die Authentifizierung unter Verwendung des token bekomme ich die folgende Antwort
InformationsquelleAutor Andre Lombaard | 2015-03-19
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ok, habe das problem gefunden in meiner Start-Klasse. Mir fehlte die folgenden
und die
ConfigureOAuth(app);
rufen Sie benötigt, um bewegt werden, um die Spitze derConfiguration
Methode. Unten ist meine neueStartup.cs
Klasse.InformationsquelleAutor Andre Lombaard