【问题标题】:Localizing OAuth messages in Web Api在 Web Api 中本地化 OAuth 消息
【发布时间】:2014-03-12 18:35:32
【问题描述】:

我将我的 Web.Api 项目配置为使用带有此选项的 OAuth 身份验证机制:

...
   OAuthOptions = new OAuthAuthorizationServerOptions
            {
                TokenEndpointPath = new PathString("/Token"),
                Provider = new ApplicationOAuthProvider(PublicClientId, UserManagerFactory),
                AuthorizeEndpointPath = new PathString("/Account/ExternalLogin"),
                AccessTokenExpireTimeSpan = TimeSpan.FromDays(14),
                AllowInsecureHttp = true
            };
...

所以它完全通过如下网址处理我的身份验证过程:http://mysite/token

如果我传递了错误的用户名/密码组合,它会给我以下 json 响应(带有Status Code:400 Bad Request):

{"error":"invalid_grant",
 "error_description":"The user name or password is incorrect."}

我想知道: 1-有没有办法本地化这个消息? 2- 有没有办法在其响应中添加自定义标头?

【问题讨论】:

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


    【解决方案1】:

    首先你应该重写 GrantResourceOwnerCredentials 函数。如果需要,您可以在该函数中添加标题或设置错误文本。

        Public Overrides Function GrantResourceOwnerCredentials(context As OAuthGrantResourceOwnerCredentialsContext) As Task 
        .............
         context.Response.Headers.Add("X-Challenge", {result.Challenge})
         context.SetError("invalid challenge response")
      ..............
         End Function
    

    【讨论】:

    • 在你的 OAuthAuthorizationServerProvider 实现中
    • 天哪!为什么没看到那堂课! :) 有时想得太复杂了,闭上眼睛看简单的可见事物!...无论如何,谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-05-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-26
    相关资源
    最近更新 更多