获取不受支持的grant_type'当发送请求到我的asp.net web api Token .Access-orig

时间:2017-08-19 15:40:33

标签: angular authentication

我有一个在localhost:4200上运行的角度2应用程序 并且在另一端运行api服务器,运行在localhost:1713上,其中有一些产品,客户......以及web api服务器默认apies,例如值API。

我只对我的域提供access-control-allow-origin,我的角度2应用程序运行(localhost:4200)具有此访问权限我可以向所有需要身份验证的apies发送请求(我手动添加访问令牌到请求从邮递员处获得的标题。)

直到这里一切正常但是当我使用此网址向我的令牌api发出请求时:http://localhost:1713/token我的密码和我的角度应用中的用户名我得到了不支持的grant_type'错误。

请帮我解决问题。我想要这个并且只对我的angular 2应用程序域提供访问权限,而不是所有域。

2 个答案:

答案 0 :(得分:0)

这与您请求的域无关。向/token发送请求时,需要指定要使用的身份验证类型。那是grant_type财产的用途。因此,既然您要发送用户名和密码,您也希望发送:

grant_type: password

稍后您可能希望将refresh_tokenrefresh_claims用于其他目的。在这种情况下,.Net auth中间件不会查找密码,它会在标题中查找您的JWT。

重点是,有许多方法可以使用/token端点进行身份验证,您需要始终告诉它您希望如何在请求中使用grant_type。如果你不包括它,你会得到你得到的错误。

答案 1 :(得分:0)

我发现了我的问题并通过在第一行中将此代码添加到我的ApplicationOAuthProvider GrantResourceOwnerCredentials方法来修复它。 代码是这样的:

context.Response.Headers.Add("Access-Control-Allow-Origin", new[] { "http://localhost:4200" });

并通过向我的webconfig.cs添加代码blew将enable cors添加到此域 代码是这样的:

var cors = new EnableCorsAttribute("http://localhost:4200", "*", "*");
            config.EnableCors(cors);

通知: 第一个代码允许访问/ token端点到我的域和第二个 允许访问其他api控制器,如值,产品......