小编toe*_*.uk的帖子

Web API 2,OWIN身份验证,SignOut不会注销

我正在做一些研究工作,以便使用Bearer令牌作为身份验证机制(即AngularJS UI,通过Web API [2]项目中的OWIN进行身份验证).

我的登录工作正常,角色信息和一切都很好,但我无法获得登出令牌.

我的启动配置是这样的:

OAuthOptions = new OAuthAuthorizationServerOptions() {
    TokenEndpointPath = new PathString("/Token"),
    Provider = new ApplicationOAuthProvider(PublicClientId),
    AccessTokenExpireTimeSpan = SESSION_TIMEOUT,
    AllowInsecureHttp = true
};
Run Code Online (Sandbox Code Playgroud)

我的退出操作就是这样:

public HttpResponseMessage Logout() {
    var authentication = HttpContext.Current.GetOwinContext().Authentication;
    authentication.SignOut(DefaultAuthenticationTypes.ExternalBearer);

    return new HttpResponseMessage(HttpStatusCode.OK);
}
Run Code Online (Sandbox Code Playgroud)

为简洁起见,我已将所有身份验证内容留下,但确认我在设置令牌时使用的是ExternalBearer.

在我的UI中,我将令牌存储在本地存储中(此处不涉及cookie,这是一个深思熟虑的设计决策).所以我的UI上有一个注销按钮,注销Logout操作,代码运行正常.

但是,如果我随后打了上需要授权的API的行动,请求仍然可以通过(即用户通过身份认证,即使他们去应该已经退出.

要么我错过了一些非常明显的东西(不会是第一次;-)或者还有更基本的东西 - 最后我正在打@leastprivilege因为我知道这是他们的区域.

我们将非常感激地提供任何帮助或见解.


我唯一能想到的是令牌在服务器/ API端是无状态的,因此无法过期或退出.

如果是这种情况,我想我可以:

a)添加一个刷新令牌,创建一个过去到期的新令牌 - 这甚至可以工作吗? - 实际取消它,它会发出一个新的令牌......旧的令牌仍然有效

b)将持有者令牌存储在数据库中并每次检查,在注销时删除令牌(自然盐渍,散列等).然而,这只是让我们回到拥有状态服务器.

c)当有人明确注销时,我可以(并且将会)从本地存储中删除令牌,但是如果baddy可以拦截令牌,则令牌在技术上仍然有效.当然,以上所有都将通过SSL,这应该会抑制坏人/女孩.

d)也许这就是为什么很多人将持有者令牌存储在cookie中(作为存储机制),所以一旦你注销,cookie将在下次刷新时删除.

对不起,以上是一个大脑转储,只是想抢先问任何问题

authentication asp.net-web-api owin asp.net-web-api2

30
推荐指数
2
解决办法
3万
查看次数

渐进式Web应用程序manifest.json文件中的JSON语法无效

使用Google Lighthouse扩展程序或其他类似的manifest.json验证服务时出现以下错误.

"错误:文件无效JSON:SyntaxError:位于0的JSON中的意外标记"

清单有效.我得到了"添加到主屏幕"提示,并且在开发工具(应用程序/清单部分)中找到了manifest.json文件,但未显示该文件的参数.

我已经检查了针对Google IO的格式,并且MIME类型是正确的.我想失去什么尝试.

有任何想法吗?

javascript json manifest progressive-web-apps

4
推荐指数
1
解决办法
934
查看次数

当使用ng-click时,AngularJS ui-router恢复为否则

我正在玩AngularJS作为学习练习.我正在尝试使用AngularJS ui-router(https://github.com/angular-ui/ui-router)并且我遇到了一个问题,我遇到了一个问题.

我把一个插在一起来说明和重现.

http://plnkr.co/edit/OvmOKPMfeFqNWc7ToCff?p=preview

以上是一个简单的向导类型组件,顶部有选项卡可以移动到特定步骤,底部有一些下一个/后退按钮可以移动到下一个相关页面.

顶部的选项卡导航工作正常,单击沿移动会相应地更改视图和URL.

然而,下一个/后退按钮的行为非常奇怪,只要它们在您第一次单击下一步时工作,而不是之后.你应该能够看到我正在谈论的内容.

看起来它试图导航到正确的视图,但随后立即恢复到其他规则.

我已经在代码中添加了钩子以在控制台中进行跟踪.本质上所有的下一个/后退按钮都称为相关状态,所以$ state.go("step1"),$ state.go("step3")等.

希望我已经提供了足够的信息,并希望任何人都可以带来任何洞察力.

谢谢.

angularjs angular-ui angularjs-routing

2
推荐指数
1
解决办法
1413
查看次数