OWIN无法使用实时服务器

时间:2017-05-31 10:52:46

标签: asp.net-mvc asp.net-web-api oauth-2.0 owin

我正在使用OWIN在我的MVC WEB API应用程序中实现OAUTH2。 我已经设置了这样的启动

public static OAuthAuthorizationServerOptions OAuthOptions { get; private set; }

static Startup()
{
    OAuthOptions = new OAuthAuthorizationServerOptions
    {
        TokenEndpointPath = new PathString("/token"),           
        Provider = new CustomOAuthProvider(),
        RefreshTokenProvider = new CustomOAuthRefreshProvider(),
        AccessTokenExpireTimeSpan = TimeSpan.FromMinutes(180),
        AllowInsecureHttp = true
    };
}

public void ConfigureAuth(IAppBuilder app)
{
    app.UseOAuthBearerTokens(OAuthOptions);
}

CustomOAuthProvider类包含

public override Task GrantResourceOwnerCredentials(OAuthGrantResourceOwnerCredentialsContext context)
{
    return Task.Factory.StartNew(() =>
    {
        var username = context.UserName;
        var password = context.Password;
        var userService = new Merchants();
        MerchantsModel user = userService.Authenticate(username, password);
        if (user.MerchantId > 0)
        {
            var claims = new List<Claim>()
            {
                new Claim(ClaimTypes.Name, user.MerchantName),
                new Claim(ClaimTypes.Email, user.EmailId),
                new Claim("CompanyName", user.CompanyName),
                new Claim("UserID", user.MerchantId.ToString()),
                new Claim("CreatedOn", DateTime.UtcNow.ToString("dd-MMM-yyyy HH:mm:ss"))
            };

            ClaimsIdentity oAutIdentity = new ClaimsIdentity(claims, Startup.OAuthOptions.AuthenticationType);

            context.Validated(new AuthenticationTicket(oAutIdentity, new AuthenticationProperties() { }));
        }
        else
        {
            context.SetError("Invalid Username or Password", "Error");
        }
    });
}

现在,当我使用POSTMAN测试它时,它在我的本地服务器上运行良好并生成access_token。 但是当我在Web服务器上部署它时,它会返回错误

{
  "error": "unsupported_grant_type"
}

我在这里遗漏了什么吗? 这是我第一次在我的应用程序中实现OAUTH2。 我是否需要添加一些配置代码才能使其在实时服务器上运行。

P.S。我发送的用于身份验证的请求在两种情况下都是相同的:

grant_type=password&username=myusername&password=mypassword

0 个答案:

没有答案