我目前正在引入(在现有应用程序中)一个自定义权限系统,它将声明(来自web应用程序中基于WSFed的OWIN auth )提供的角色映射到应用程序本身定义的权限。
目前,计划是将权限系统直接备份到线程主体上。
对这些权限进行验证:
但是,目前下落不明的一件事是,有一个控制台应用程序作为调度任务运行,它使用与web应用程序相同的业务层类(相同的程序集引用)。该应用程序在独立域中的本地Windows用户下运行,该用户不具备所需的角色(因此将无法授权)。
我可以看到一些解决这个问题的方法:
所有这些似乎都不是特别优雅的解决方案。既然如此,我的问题很简单:在这种情况下,在身份授权方面是否有一种规范的方法?
发布于 2015-07-17 11:16:28
非常有趣的问题,没有真正的规范答案,据我所知。
我会选择1或2,视你的情况而定。如果为客户端执行身份验证逻辑,则控制台应用程序只是另一个客户端,它需要有权限才能在系统中执行任务。仅为客户端修改您的权限系统,可能会打开安全漏洞,并且听起来像针对具有权限的客户端的攻击逻辑。
现在在1到2之间-这取决于你正在处理的情况。如果客户端要多次部署或由客户部署,为了简化部署,我将黑入命令行应用程序,并向主体添加所需的声明。
如果您的命令行客户端是供私人使用的,并且不会多次部署,那么最简单的方法就是让一个单独的域用户拥有用户所需的所有权限,并从用户处运行该应用程序。这将使权限与应用程序分离,如果您需要更改应用程序用户的权限而不更改命令行应用程序中的代码,则将使您的生活更加轻松。
这些纯粹是我的猜测,我希望会有其他意见。
https://stackoverflow.com/questions/31471256
复制相似问题