小编Dyl*_*tie的帖子

使用FileSystemObject的文件权限 - CScript.exe说一件事,Classic ASP说另一件事

我有一个经典的ASP页面 - 用JScript编写 - 使用Scripting.FileSystemObject将文件保存到网络共享 - 而且它不起作用.("没有权限")

ASP页面在IIS下使用Windows身份验证运行,并启用了模拟.

如果我通过CScript.exe在本地运行以下代码块:

var objNet = new ActiveXObject("WScript.Network");
WScript.Echo(objNet.ComputerName);
WScript.Echo(objNet.UserName);
WScript.Echo(objNet.UserDomain);

var fso = new ActiveXObject("Scripting.FileSystemObject");
var path = "\\\\myserver\\my_share\\some_path";
if (fso.FolderExists(path)) {
    WScript.Echo("Yes");
} else {
    WScript.Echo("No");
}
Run Code Online (Sandbox Code Playgroud)

我得到(预期)输出:

MY_COMPUTER
dylan.beattie
MYDOMAIN
Yes
Run Code Online (Sandbox Code Playgroud)

如果我在.ASP页面中运行相同的代码,则将Response.Write替换为WScript.Echo,我得到以下输出:

MY_COMPUTER
dylan.beattie
MYDOMAIN
No
Run Code Online (Sandbox Code Playgroud)

现在 - 我的理解是WScript.Network对象将检索实际运行代码的线程的当前安全凭证.如果这是正确的 - 那么为什么在同一个域上的同一个用户从CScript.exe到ASP获得不同的结果?如果我的ASP代码运行为dylan.beattie,那么为什么我不能看到网络共享?如果它不像dylan.beattie 那样运行,为什么WScript.Network会认为它是?

permissions wsh filesystemobject asp-classic

6
推荐指数
1
解决办法
6770
查看次数

如何在传递给DataTable Select()的字符串中包含撇号?

dt.Select(string)给出错误missing operandapostrophe符号是的字符串中.

解决这个错误的方法是什么?或如何处理此错误?

datatable ado.net

6
推荐指数
1
解决办法
2929
查看次数

如何让IIS为我的favicon.ico发布缓存标头?

我们网站的favicon.ico文件多年来没有变化 - 并且不会很快改变 - 所以我想配置IIS以使用远期缓存过期标头来提供它.我站点的根文件夹中的其余内容是不应缓存的动态页面 - 但据我所知,IIS只允许您在每个文件夹的基础上设置内容到期缓存 - 所以有没有如何为favicon.ico设置缓存标头,而不影响主目录中的其他内容?

iis favicon caching http-headers

6
推荐指数
1
解决办法
4817
查看次数

为什么我的ServiceStack AuthProvider永远不会调用Authenticate(),即使IsAuthorized()返回false?

我正在为ServiceStack编写一个AuthProvider来对我们自己的OAuth2服务器进行身份验证,并且遇到ServiceStack与我的提供者交互方式的问题.

根据https://groups.google.com/d/msg/servicestack/e3kkh-qRDYs/DF9Y05ibl-MJ

通常有两种扩展方式,如果要提供自己的OAuth实现,则可以使用子类AuthProvider(或实现IAuthProvider)并覆盖包含服务的整个实现的Authenticate()方法.AuthService现在没有自己的实际实现,只是检查Auth Provider .IsAuthorized()方法以查看用户是否已经过身份验证,如果没有,则调用Authenticate()方法.[我的重点]

我现在的整个身份验证提供程序如下所示:

using System;
using ServiceStack.ServiceInterface;
using ServiceStack.ServiceInterface.Auth;

namespace SpotAuth.ResourceServer.Services {
    public class SpotlightOAUthProvider : AuthProvider {
        public override bool IsAuthorized(IAuthSession session, IOAuthTokens tokens, Auth request = null) {
            return (false);
        }

        public override object Authenticate(IServiceBase authService, IAuthSession session, Auth request) {
            // A breakpoint on this line is never reached; the service just returns Unauthorized.
            throw new NotImplementedException();
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

为什么永远不会调用Authenticate方法?上面链接的论坛帖子已有近一年的历史,但我找不到任何暗示此行为已被弃用的内容.

authentication servicestack

6
推荐指数
1
解决办法
579
查看次数

我应该如何存储和撤销OAuth2授权和/或刷新令牌?

我正在一个概念验证应用程序中实现OAuth2授权代码流 - 所以纯ASP.NET MVC,不使用DotNetOpenAuth或任何其他auth框架 - 我正在摸索如何处理撤销.

我的实现是这样的:

  1. 用户登录FooApp(OAuth2客户端应用程序 - 网站)
  2. FooApp将用户重定向到www.myserver.com/accounts/authorize
  3. 用户说"是的,FooApp可以访问我的东西"
  4. 我生成授权代码,并将此代码与用户已授权的客户端ID,用户ID和范围一起存储在myserver.com中.(在我的实现中,授权代码是存储谁授权什么的数据库记录的GUID密钥.)
  5. 用户被重定向回FooApp
  6. FooApp向MyServer发出HTTP请求,包括授权代码
  7. MyServer查找该授权代码,验证它是否有效且未过期.它标记了使用的授权代码 - 因为OAuth2授权代码必须是单用且短暂的 - 然后使用刷新令牌访问令牌响应FooApp
  8. FooApp使用access_token来访问用户的数据.当access_token在10分钟后过期时,FooApp使用refresh_token来获取另一个.
  9. 几周后,用户决定他们厌倦了FooApp访问他们的数据,因此他们登录MyServer并撤销FooApp的授权.

好的,这里的规范在推荐的实现上有点模糊,我认为这归结为当用户撤销授权时会发生什么.

选项1:

刷新令牌是一个包含用户ID,客户端ID和范围的自包含加密字符串.它不存储在任何地方.当访问令牌到期时,客户端向我发送刷新令牌.我解密了这个,并检查我是否仍然在该文件中为该用户/客户端/范围组合提供了有效的授权记录.如果我这样做,我会向他们发送一个新的访问令牌.如果没有,我会返回invalid_grant错误.

在这种情况下,撤消授权意味着将我的数据库中的授权记录标记为已撤销(或仅将其完全删除).没有授权记录 - >刷新令牌将无效 - > FooApp无法再访问数据.

选项2:

我将刷新令牌与client_id,用户ID和该令牌中授权的作用域一起存储在我的数据库中.当我收到刷新令牌的请求时,我找到了refresh_token记录,检查它是否已被撤销等.

在这种情况下,"撤销授权"将通过将我的数据库中的刷新令牌标记为已撤销或通过删除来实现.

另外 - 在这种情况下,一旦交换了令牌,我就看不出有任何理由将授权保留在文件中.如果用户希望知道哪些应用程序可以访问其MyServer数据,那么我只需查询数据库中所有未撤销的刷新令牌和相关范围.

据我所知,任一选项都将满足OAuth2规范的要求,同时允许用户查看和撤销其MyServer帐户上当前活动的所有授权.一个限制是选项1不允许将多个单独的OAuth2令牌集发布到同一用户的同一客户端应用程序 - 但我想不出您想要执行此操作的任何场景.

你会推荐什么?加密令牌和存储授权?使用后删除授权,并存储刷新令牌?还是真的没关系?

oauth-2.0

6
推荐指数
0
解决办法
1372
查看次数

如何从FinalCilder输出将由TeamCity捕获的消息?

我正在运行TeamCity Professional 4.5.3和FinalBuilder Pro 6; TeamCity使用命令行任务运行FinalBuilder项目.

如何让FinalBuilder将消息打印到构建日志中,以便TeamCity捕获它们?该TeamCity的文件是不够清楚,但我无法找到任何方式输出的FinalBuilder所需的值-我需要调用echo的DOS命令,或运行脚本的一个小片段,还是什么?

teamcity continuous-integration finalbuilder

5
推荐指数
1
解决办法
976
查看次数

配置(或模仿)svn:externals以包含来自svn托管项目的Github中的代码

我们在本地使用Subversion,我们正在开发一个使用Fluent NHibernate的分支的项目,它在Github上托管.

我想它设置,以便单个svn checkout将检索构建项目所需的一切,但保持从github获取HEAD更新的能力.

有什么方法可以从Git存储库中提取代码,好像它是一个svn:external依赖项?我可以将.git文件夹检查到我们的Subversion存储库中,并在需要时运行git fetch,然后svn提交结果吗?

svn git github git-svn svn-externals

5
推荐指数
1
解决办法
1521
查看次数

为什么Environment.CommandLine.Trim('"')不删除尾随引用?

以下C#代码:

using System;
namespace TrimTest {
    class Program {
        static void Main(string[] args) {
            Console.WriteLine(Environment.CommandLine);
            Console.WriteLine(Environment.CommandLine.Trim('"'));
            Console.ReadKey(false);
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

产生以下输出:

"D:\Projects\TrimTest\TrimTest\bin\Debug\TrimTest.vshost.exe"
D:\Projects\TrimTest\TrimTest\bin\Debug\TrimTest.vshost.exe"
Run Code Online (Sandbox Code Playgroud)

除非我误读了文档:

从trimChars参数中所有出现的字符后保留的字符串将从当前String对象的开头和结尾删除.如果trimChars为null或为空数组,则会删除空格字符.

不应该从该输出中的第二个字符串中修剪尾部双引号?

.net c# clr trim

5
推荐指数
1
解决办法
1059
查看次数

“无法验证数据”在不同的 Web 应用程序之间使用 FormsAuthentication

我有两个 .NET Web 应用程序在同一台服务器上运行 - sentinel(托管在https://sentinel.mydomain.com/)和fortknox(在http://www.mydomain.com/fortknox

Sentinel 是一个身份验证“门户”。FortKnox 是一个“概念证明”应用程序,它使用表单身份验证,但将 loginUrl 设置为https://sentinel.mydomain.com/login(以及一个特殊的 Application_EndRequest 处理程序来限定 ReturnUrl)。Sentinel 是使用 MVC 4 和 Razor 用 .NET 4.0 编写的;FortKnox 是使用 .NET 2.0 的 ASP.NET MVC 2。

我正在使用 ASP.NET FormsAuthentication 并将 cookie 域设置为 ,.mydomain.com以便设置 的 cookiesentinel.mydomain.com将与请求一起发送到www.mydomain.com,反之亦然。cookie 部分运行良好- 两个应用程序都获得相同的 .ASPXAUTH 加密表单票证。

问题是,在我们的生产服务器上,fortknox无法解密由哨兵创建的cookie——即使它们具有相同的机器密钥。即使两个应用程序都在同一个物理盒子上运行,它也不起作用。

用户点击 fortknox,他们被重定向到哨兵,他们登录,设置了 cookie,他们被重定向回 fortknox,然后我得到“无法验证数据”:

Exception: Unable to validate data.
  at System.Web.Configuration.MachineKeySection.EncryptOrDecryptData(Boolean …
Run Code Online (Sandbox Code Playgroud)

forms-authentication machinekey asp.net-mvc-4

5
推荐指数
1
解决办法
4585
查看次数

我应该为成功的HTTP DELETE请求返回410 Gone吗?

我正在ReST API(构建在ServiceStack上)上实现DELETE支持,并想知道在成功删除DELETE后要返回的响应代码.

HTTP将410定义为:

请求的资源在服务器上不再可用,并且不知道转发地址.预计这种情况将被视为永久性的.具有链接编辑功能的客户端应该在用户批准后删除对Request-URI的引用.如果服务器不知道或无法确定条件是否是永久性的,则应该使用状态代码404(未找到).除非另有说明,否则该响应是可缓存的.

现在,如果一个资源刚刚出现DELETE,我可能确实希望应用这些建议中的许多......但是接受的实践似乎正在回归200 OK成功DELETE- 特别是因为该4XX范围应该表示错误条件.

除了HTTP规范中的指南之外,还有哪些令人信服的论据?

rest http-status-code-410 http-delete

5
推荐指数
1
解决办法
1975
查看次数