07 2015 档案

摘要:之前写过2篇关于refresh token的生成与持久化的博文。后来发现一个问题(这是遇到的第1个问题),在用户不登录的情况下,以client credentials grant方式获取access token时,也会生成refresh token并且保存至数据库。 阅读全文
posted @ 2015-07-27 16:16 dudu 阅读(4754) 评论(11) 推荐(1) 编辑
摘要:在前一篇博文中,突发奇想地用文件存储实现了oauth refresh token的持久化。在这篇博文中,我们将面对现实地将文件存储改为数据库存储。既然软件开发中唯一不变的就是变化本身,那我们主动求变,用变化来验证代码的设计是否能随机应变。 阅读全文
posted @ 2015-07-20 17:34 dudu 阅读(2031) 评论(13) 推荐(5) 编辑
摘要:使用nginx的反向代理功能搭建nuget镜像服务器时,需要针对官方nuget服务器的响应内容进行字符串替换,比如将www.nuget.org替换为镜像服务器的主机名,将https://替换为http://。而nginx没有内置这个功能,需要使用第三方module,比如subs_filter。 阅读全文
posted @ 2015-07-19 16:11 dudu 阅读(14845) 评论(2) 推荐(1) 编辑
摘要:对于请求内容的http compression,.NET中的HttpClient并没有提供对压缩的内置支持,IIS也没有提供对解压的内置支持,需要自己写代码实现,本文也是由此而生。对于压缩与解压,System.IO.Compression中提供了对应的类库——GZipStream与DeflateStream,我们只需要在HttpClient与Web API中应用它们即可。 阅读全文
posted @ 2015-07-17 17:33 dudu 阅读(8303) 评论(17) 推荐(12) 编辑
摘要:之前只是知道refresh token是用于刷新access token的,却不知道refresh token凭什么可以刷新access token?也就是知其然,不知其所以然。这是由于之前没有发现refresh token与access token有1个非常重要的区别——Refresh token只是一种标识,不包含任何信息;而access token是经过序列化并加密的授权信息,发送到服务器时,会被解密并从中读取授权信息。 阅读全文
posted @ 2015-07-15 18:41 dudu 阅读(15972) 评论(35) 推荐(14) 编辑
摘要:在ASP.NET OWIN OAuth(Microsoft.Owin.Security.OAuth)中,access token 的默认加密方法是:1) System.Security.Cryptography.DpapiDataProtector.Protect();2) Convert.ToBase64String();3) .TrimEnd('=').Replace('+', '-').Replace('/', '_'); 阅读全文
posted @ 2015-07-14 23:30 dudu 阅读(9135) 评论(5) 推荐(1) 编辑
摘要:本以为搞定了 access token 就搞定了 Web API 的验证与授权问题,可是发现 OAuth 中还有一种 token,叫 refresh token。开始的时候很是纳闷,access token 已经能解决问题,为什么要搞定两套 token,refresh token 有啥用?在纳闷之下,发出了这样的感慨:既生 access token,何生 refresh token? 阅读全文
posted @ 2015-07-13 17:12 dudu 阅读(48676) 评论(44) 推荐(22) 编辑
摘要:默认情况下,ASP.NET Web API不从Controller的注释中生成帮助文档。如果要将注释作为Web API帮助文档的一部分,比如在帮助文档的Description栏目中显示方法注释中的summary,需要进行一些配置操作。 阅读全文
posted @ 2015-07-10 17:58 dudu 阅读(9284) 评论(13) 推荐(1) 编辑
摘要:之前只知道在同步方法中调用异步(async)方法时,如果用.Result等待调用结果,会造成线程死锁(deadlock)。自己也吃过这个苦头,详见等到花儿也谢了的await。昨天一个偶然的情况,造成在同步方法中调用了async方法,并且没有使用.Result,结果造成整个ASP.NET应用程序的崩溃,见识了同步/异步水火难容的厉害。 阅读全文
posted @ 2015-07-08 12:57 dudu 阅读(11192) 评论(17) 推荐(20) 编辑
摘要:Linux用的是Ubuntu,dnx版本是1.0.0-beta6-12120,EF版本是7.0.0-beta5。以下是用Entity Framework 7生成SQL Server数据库的操作步骤。在project.json中添加Entity Framework 7的引用。定义实体类。定义DbContext。在config.json中添加数据库连接字符串。在Startup.cs中加载config.json中的配置。 阅读全文
posted @ 2015-07-05 11:55 dudu 阅读(2992) 评论(5) 推荐(2) 编辑
摘要:最近在测试一个第三方API,准备集成在我们的网站应用中。API的调用使用的是HttpClient,由于这个API会在关键业务中用到,对调用API的整体响应速度有严格要求,所以对HttpClient有了格外的关注。开始测试的时候,只在客户端通过HttpClient用PostAsync发了一个http post请求。 阅读全文
posted @ 2015-07-03 12:37 dudu 阅读(68319) 评论(74) 推荐(86) 编辑
摘要:估计有1个月了,在mac上编译dnx从来没有成功过,因为在安装nuget packages时连接myget.org总是超时。今天在 ASP.NET 5 Beta5 Now Available 中得知 dnx 已经支持 NuGet v3 feed,而且说"Restoring packages using the new NuGet v3 feed is significantly faster"。于是将 dnx 中的 NuGet.Config 改为 v3 feed。 阅读全文
posted @ 2015-07-01 23:24 dudu 阅读(3720) 评论(6) 推荐(0) 编辑