【问题标题】:Authorization has been denied for this request此请求的授权已被拒绝
【发布时间】:2015-02-06 02:52:12
【问题描述】:

我创建了一个带有基本 OAuth 的 webapi 和一个使用 ajax 访问该 api 的移动应用程序。我将 AccessTokenExpireTimeSpan 设置为 1 天,如下所示。

static Startup()
{
    PublicClientId = "self";
    UserManagerFactory = () => 
      new UserManager<IdentityUser>(new UserStore<IdentityUser>());
    OAuthOptions = new OAuthAuthorizationServerOptions
    {
        TokenEndpointPath = new PathString("/Token"),
        Provider = new ApplicationOAuthProvider(PublicClientId, UserManagerFactory),
        AuthorizeEndpointPath = new PathString("/api/UserAccount/ExternalLogin"),
        AccessTokenExpireTimeSpan = TimeSpan.FromDays(1),
        AllowInsecureHttp = true            
    };
}

在我将本地 PC 部署到托管站点之前,一切正常。

我的应用程序可以登录并接收新令牌,并且使用此令牌,应用程序(每 2 秒)能够访问 webapi 一整天,直到令牌过期。 但是,如果我停止应用程序(不停止应用程序)访问 webapi 5 到 6 分钟,然后再次启动它,我将收到“401 - 此请求的授权已被拒绝”。并且需要请求一个新的令牌。

现在,由于它可以在我的 PC 上运行,我是否错过了任何可能导致拒绝的内容,例如会话、cookie、主机系统中的设置等?

仅供参考,我的电脑使用 IIS7.5,主机系统由 PleskWin 供电并使用 IIS8.5

【问题讨论】:

标签: asp.net-web-api http-status-code-401 unauthorized


【解决方案1】:

我设法玩弄了 Plesk,并在网站的 ASP.Net 配置 > 会话设置 > 身份验证模式下找到了一个设置,我将它从原来的“无”更改为“Windows”并且它可以工作。 5 到 6 分钟后,它并没有像我之前所说的那样给我错误。 仅供参考,在同一部分下,还有一个会话超时(分钟),它设置为 20,我从部署开始就没有更改它。

我仍然不确定此设置的作用或它与 IIS 的关系。有人能告诉我吗?

【讨论】:

    【解决方案2】:

    我正在处理完全相同的问题,但是我的设置已经在“Windows”上,但我无法使其正常工作。

    在此处更改设置(网站的 ASP.Net 配置)会导致连接字符串无效,因为它没有很好地编写 web.config。 您能告诉我在更改此设置(“无”到“Windows”)后您的 web.config 是否发生了变化吗? 您知道您的提供商之前是否遇到过这些问题?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-07-17
      • 2019-03-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-11-16
      • 2018-10-05
      • 2016-12-06
      相关资源
      最近更新 更多