记录一次使用 USB 3.0 U盘安装 WIN7的故事

换新电脑,全是USB3.0或USB3.1的接口(无USB2.0接口)

以前使用Windows 7 USB Tool 将一个USB2.0的U盘(USB2.0)开发成了安装盘, 一直好使, 直到这个电脑无法工作.

因为Windows7 默认安装对USB3.0不支持.

 

解决办法如下:

前提:适合使用INTER 芯片组的电脑

1. 去Inter官网下载 Win7-USB3.0-Creator,

下载地址: https://downloadcenter.intel.com/zh-cn/download/25476/Windows7-USB3-0Creator

下载后参考该文章 http://www.xitonghe.com/jiaocheng/windows7-4190.html 一步步进行操作即可

 

2. 安装过程中若出现 Windows无法安装到GPT分区形式磁盘, 请访问文章

http://jingyan.baidu.com/article/08b6a591c82df414a8092224.html

 

 

 

替罪羊

替罪羊,看看书,思考人生。

替罪羊,总是在一个人支撑,不吱声。

我不是替罪羊,我继续发声,大声讲话。

能把要求大声地讲出来也是能力,替罪羊。

 

或曾,我们都懂得了整个一切,却不懂与这个世界的沟通。

当所有向前,一切所愿,我们不当替罪羊。

我们要讲出一切问题,让人知效,脱掉自己的责任。

会把我们压跨的,替罪羊。

喜于代码,忽于外在沟通。

 

替罪羊=程序员=码农。

请将能力展示,代码不是你的一切,替罪羊。

与人,与事,一切都是社会学,沟通学。

换个思维看看,“将心比心,更有心”。

 

 

2016-10-19 凌晨

我们不是在坚持 ,是撑,撑着就好

你总是觉得日子很闲, 一眼看到两三年后的日子.

正常. 这没错.

你总是担心着这有些时间如何过,如何去打发掉.

也正常,这也不是问题.

我们不想说什么坚持, 也谈不上坚持.

其实,能撑, 能继续,能还有一天不死掉.也就行了.

感觉每天都是在煎熬中度过.都在做很多.

如此,长久.

就算拍倒在桌子上不再起来,这也是选择,

正常,这没错.

你不总是定义人生,只需如此过完人生.

理解,不理解,

都在于能不能撑着,不死掉即可.

你现在的生活还有激情吗,

你心中的火焰还在燃烧吗/

仅此.

钉铛 — 企业应用的钉钉连接器 SSO,免登录

钉铛是一个帮助企业方便快捷地将自身业务系统接入钉钉, 实现SSO(单点登录)的应用; 用于简化企业应用接入钉钉的技术难度与降低成本, 实现应用的免登与钉钉账号关联.

钉铛的设计图如下:

dd_flow

钉铛的具体流程图参考如下:

 

dd_impl

 

针对企业不同的应用及场景, 钉铛提供以下几种方式连接应用与钉钉:

  1. 用户密码代填(服务端)
    采用传统的账号名&密码进行服务端代填实现身份验证,服务器不需要进行改造即可实现免登服务
  2. JWT SSO(无密码)
    采用token进行身份信息传递,钉铛与应用服务之间不会传递密码,但是服务器需要进行少量的改动;提供有各种各样的库和样本代码:php, java, perl, c, c#, .net, ruby etc.
  3. 移动APP
    用于实现在钉钉中打开移动APP, 以及实现钉钉账号与移动APP之间的免登, 我们提供Android, IOS的APP SDK与DEMO程序帮助企业开发只需要很少的改动即可集成到钉钉中.

 

 

欢迎咨询

联系邮箱: zhao@idsmanager.com

http://idsmanager.com

让Spring Security更安全的配置办法

Spring Security, 不错的安全框架,但在实际项目中, 如何让安全更安全呢? 以下是在实际项目中总结的经验之谈.

(以Spring Secuirty 4.0.1版本为基础)

1.登录时的参数名(username, password)不要使用默认的. 登录,退出的URL不要使用默认的.

Secuiry中默认的用户名参数为username, 密码为password; 在配置中修改不要使用默认的, 如username修改为uid, password为pwd__等等;

同样, 登录的URL与退出时的URL也配置为不使用默认的, 一个配置参考如下

        <form-login authentication-failure-url="/login?error=1" default-target-url="/index"
                    always-use-default-target="true"
                    username-parameter="uid" password-parameter="pwd__"
                    login-page="/login_" login-processing-url="/sign_in"/>
        <logout logout-success-url="/index" logout-url="/sign_out"/>

2.升级Spring Secuirty到4.0或之后的版本, 启用CSRF, 防止跨站请求伪造登录

如果还在使用Secuirty 3或更老的版本, 升级到4.0或之后 的版本, Security将默认启用CSRF, 可防止跨站请求伪造登录, 或是用机器登录

若不需要CSRF的场景(如对外的API接口), 可在Security配置中关闭, 在<http中配置如下

        <csrf disabled="true"/>

3.退出时清除维持会话(Session)的cookie   默认情况在退出时Security会调用Session的invalidate()方法, 但不会清除维持会话的cookie,

我们要配置为在退出时清除该cookie —  使用不同的服务器的cookie值可能不同, 以Tomcat使用的默认cookie名为JSESSIONID为例, 其配置如下

        <logout logout-success-url="/index" logout-url="/signout" delete-cookies="JSESSIONID"/>

    也可扩展一个LogoutSuccessHandler的实现类来完成该功能.

4.进入登录页面时使用新的Session, 销毁旧的Session

也就是在进入登录页面的请求中调用Session的invalidate()方法, 强制服务器使用一个新的session id.示例如下

    @RequestMapping(value = "login", method = RequestMethod.GET)
    public String login(HttpServletRequest request) throws Exception {
        request.getSession().invalidate();
        return "login";
    }

5.用户密码的存储除了加密外, 还需要salt   用户密码的安全永远不能忽略, 不仅要使用不可逆的加密算法(如MD5), 还需要配置salt值,且是动态的salt值(一般使用username或用户的其他属性),示例配置如下

    <authentication-manager alias="authenticationManager">
        <authentication-provider user-service-ref="userService">
            <password-encoder hash="md5">
                <salt-source user-property="username"/>
            </password-encoder>
        </authentication-provider>
    </authentication-manager>

其他一些相关的设置

1.用户名usernmae的输入框添加 autocomplete=’off’ 属性

这是一个在页面上禁止浏览器记住输入框中输入过的用户名的设置, 添加后就永远不记住之前人登录的用户名了,示例如下:

    <input type="text" name="uid_" placeholder="输入用户名" required="" autocomplete="off"/>

2.记录登录失败的信息与次数.  在Security中配置AuthenticationFailureHandler类的实现, 记住用户登录失败的信息,或添加如登录失败三次就需要有验证码等功能, 防止暴力破解用户信息.

3.Concurrent Session控制同一账号同时登录的人数.

若需要一个账号同时只能有一个(或具体的数量)在登录,则添加该配置, 具体参考Spring Security相关文档.

 

或许只是一小点点的改变, 不过将更好.

Spring data Mongodb 乐观锁实现及配置

pring 与 MongoDB整合的示例太多, 但研究的不够深入. 此处在实现Spring MongoDB乐观锁的实现及配置

1.在Domain(实体)中添加@Version字段, 类型为Long, 如下:

@Version
protected Long version;

注意这儿引入的包为:

import org.springframework.data.annotation.Version;

2.在Spring MongoDB的配置中添加auditing, 如下:

    <mongo:auditing/>

这一步必须配置, 否则在保存时会报异常 OptimisticLockingFailureException

 

解决Spring Security 表单上传文件CSRF失效的问题

在Spring Security4中引入的CSRF是不错的安全机制. 但在常用的上传文件中(form提交, post, 使用commons-fileupload)会导致CSRF失效,

这问题的根源在于CSRF无法获取表单中的_csrf 的值引起的(可在CsrfFilter打断点查看).

之前我也被这问题困惑了一天, 不知如何是好.

解决之道如下:

1.升级项目中使用的Servlet API版本至3.0及以上.

2.不要使用commons-fileupload组件,即CommonsMultipartResolver , 而使用Servelt提供的组件对象StandardServletMultipartResolver

其在Spring MVC中的配置如下:

<bean id=”multipartResolver”
class=”org.springframework.web.multipart.support.StandardServletMultipartResolver”>
</bean>

3.在Spring MVC的DispatchServlet配置中添加如下配置(web.xml中)

<multipart-config>
<!–location>/tmp</location–>
<max-file-size>1000000</max-file-size>
</multipart-config>

其中的<max-file-size>即限制上传文件的大小. 完整的DispatchServelt配置如下:

<servlet>
<servlet-name>mvc</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<load-on-startup>2</load-on-startup>
<multipart-config>
<!–location>/tmp</location–>
<max-file-size>1000000</max-file-size>
</multipart-config>
</servlet>
<servlet-mapping>
<servlet-name>mvc</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>

 

注意在升级Servlet API后需要将web.xml的状况声明也更新为3.0的,如下:

<?xml version=”1.0″ encoding=”UTF-8″?>
<web-app xmlns=”http://java.sun.com/xml/ns/javaee” xmlns:xsi=”http://www.w3.org/2001/XMLSchema-instance”
xsi:schemaLocation=”http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd”
version=”3.0″>

 

至此, CSRF工作正常.

分析大概的原因是commons-fileupload组件对request进行封装时对CSRF的支持有问题. 没将_csrf值传递.

参考文章: http://stackoverflow.com/questions/25185578/spring-security-3-2-csrf-and-multipart-requests

 

spring-oauth-server 0.4 发布, Oauth2 与 Spring Security 安全应用整合

在spring-oauth-server 0.4-beta版本从2015-11-18发布一个多月后, 0.4版本正式发布. 在这期间主要测试各项新增功能.

spring-oauth-server 是一个整合Oauth2与Spring Security的安全应用项目,是从https://github.com/spring-projects/spring-security-oauth/tree/master/spring-security-oauth2扩展的符合实际项目需要的开源项目.

0.4版本的更新的内容如下:

  • (109) – 升级 spring-security-oauth2 的版本到2.0.7.RELEASE, 旧版本为1.0.5
  • (113) – Upgrade spring, spring security version to > 4.0; 具体版本为Spring: 4.1.6.RELEASE, Spring Security: 4.0.1.RELEASE
  • Upgrade JAVA JDK to 1.8; Servlet 3.0
  • 将项目添加到在线测试服务器, 地址为:https://andaily.com/spring-oauth-server/
  • (115) – Sync update spring-oauth-client version with spring-oauth-server
  • (116) – Remove mybatis dependency, only use JDBC
  • Oauth database table add index
  • (97) – Fix custom access_token_validity,refresh_token_validity issue(#5)

 

0.4版本访问地址: http://git.oschina.net/shengzhao/spring-oauth-server/tree/0.4/

spring-oauth-server HomePage: http://git.oschina.net/shengzhao/spring-oauth-server

面向期望(Oriented expectations)

走过或者正在走在OOP思想中,我们一直坚信的JAVA实现.面向期望, 我们不再想什么做什么;想如何做好就如何做;想给客户解释为什么这样做,而不是按照客户想要的去做;不再把技术的难度欺压在用户的期望上;而是: 用户所期望的就是我们想要的; 用户如何使用好使我们就如何去做; 只做他所需,不做己所求.站在用户的角度,实际地去想你就是一个普通的用户,我就是这应用中的一个角色,当我打开页面时,我期望的页面是什么样的,有哪些内容是我所关心的,我如何操作最方便,最能达到我所想要完成的事情或操作;不再是我想它应该是这样的, 而应该是: 我就是用户, 我就期望它是这样的,不是那样的. 让操作舒服,让用户喜欢,让流程清晰,让目的明确,让他们所认可, 这就是目的.

我们站在技术角度的思想,完全不是一个用户所想的,转变角色,我们这里不谈实现,不谈if-else,不谈代码风格. 要做的,只是闭上双眼,想像你就是用户,打开浏览器(或其他UI界面),想我想的页面应该是什么样的,我所期望的注册是什么样的,信息浏览是什么样的,要登录是什么样的,当需要帮助时是如何提示的; 甚至就去听听那些完全不懂技术的朋友,用户或者一个街边陌生人所想要的(面对从任意1000人中抓出来也不足一两个懂技术的人群,那998或999人的意见是更重要的,也更值得聆听的).

http://blog.csdn.net/monkeyking1987/article/details/7521714