Android 与 IIS服务器身份验证

1)基础验证:

 1 /**
 2      * 从服务器取图片
 3      *
 4      * @param url
 5      * @return
 6      */
 7     public void getHttpBitmap(final String url) {
 8         new Thread(new Runnable() {
 9             public void run() {
10                 Bitmap bitmap = null;
11                 try {
12                     HttpGet httpPost = new HttpGet(url);
13                     DefaultHttpClient httpClient = new DefaultHttpClient();
14                     // 基本身份验证
15                     BasicCredentialsProvider bcp = new BasicCredentialsProvider();
16                     String userName = "username";
17                     String password = "password";
18                     AuthScope authScope = new AuthScope(AuthScope.ANY);
19                     bcp.setCredentials(authScope ,
20                       new UsernamePasswordCredentials(userName, password));
21
22                     httpClient.setCredentialsProvider(bcp);
23                                   //基本身份验证结束              HttpResponse httpResponse = httpClient.execute(httpPost);
24                     android.util.Log.i("", "=====>" + httpResponse.getStatusLine().getStatusCode());
25                     android.util.Log.i("", "=====>" + httpResponse.getEntity().getContentLength());
26                     InputStream is = httpResponse.getEntity().getContent();
27                     bitmap = BitmapFactory.decodeStream(is);
28                     is.close();
29                 } catch (Exception e) {
30                     e.printStackTrace();
31                 }
32
33                 getResult(bitmap);
34             }
35         }).start();
36     }
1 byte[] encodedPassword = (userName + ":" + password).getBytes();
2 httpPost.addHeader("Authorization","Base " + Base64.encodetoString(encodedPassword, Base64.No_Wrap);

2)ntlm 身份验证:

1  // register ntlm auth scheme
2                     httpClient.getAuthSchemes().register("ntlm", new NTLMSchemeFactory());
3                     httpClient.getCredentialsProvider().setCredentials(
4                             // Limit the credentials only to the specified domain and port
5                             new AuthScope(AuthScope.ANY_HOST, AuthScope.ANY_PORT),
6                             // Specify credentials, most of the time only user/pass is needed
7                             new NTCredentials(userName, password, "", "")
8                     );

直接替换 //基本验证 即可使用

使用jcifs-1.3.17.jar(可到https://github.com/masconsult/android-ntlm 进行下载)

1 public class NTLMSchemeFactory implements AuthSchemeFactory
2 {
3     @Override
4     public AuthScheme newInstance(HttpParams params)
5     {
6         return new NTLMScheme(new JCIFSEngine());
7     }
8 }
 1 public class JCIFSEngine implements NTLMEngine {
 2
 3     private static final int TYPE_1_FLAGS = NtlmFlags.NTLMSSP_NEGOTIATE_56
 4             | NtlmFlags.NTLMSSP_NEGOTIATE_128
 5             | NtlmFlags.NTLMSSP_NEGOTIATE_NTLM2
 6             | NtlmFlags.NTLMSSP_NEGOTIATE_ALWAYS_SIGN
 7             | NtlmFlags.NTLMSSP_REQUEST_TARGET;
 8
 9     @Override
10     public String generateType1Msg(String domain, String workstation)
11             throws NTLMEngineException {
12         final Type1Message type1Message = new Type1Message(TYPE_1_FLAGS,
13                 domain, workstation);
14         return Base64.encode(type1Message.toByteArray());
15     }
16
17     @Override
18     public String generateType3Msg(String username, String password,
19             String domain, String workstation, String challenge)
20             throws NTLMEngineException {
21         Type2Message type2Message;
22
23         try {
24             type2Message = new Type2Message(Base64.decode(challenge));
25         } catch (final IOException exception) {
26             throw new NTLMEngineException("Error in type2 message", exception);
27         }
28
29         final int type2Flags = type2Message.getFlags();
30         final int type3Flags = type2Flags
31                 & (0xffffffff ^ (NtlmFlags.NTLMSSP_TARGET_TYPE_DOMAIN | NtlmFlags.NTLMSSP_TARGET_TYPE_SERVER));
32         final Type3Message type3Message = new Type3Message(type2Message,
33                 password, domain, username, workstation, type3Flags);
34         return Base64.encode(type3Message.toByteArray());
35     }
36 }
时间: 2024-11-05 16:27:14

Android 与 IIS服务器身份验证的相关文章

服务器身份验证方式

服务器身份验证方式: 1.是基于Cookie的身份验证,使用服务器端的cookie来对每次请求的用户进行身份验证. 2. 较新的方法,基于令牌Token-Based的认证,依赖于被发送到服务器上每个请求的签署令牌. 为什么基于令牌token-based的方式更好呢?理由如下:1.跨域 / CORS: cookies + CORS 并不能跨不同的域名.而基于令牌能够使用 AJAX 调用服务器,在任何域名下你都可以使用HTTP header头部来传输用户信息. 2. 无态(代表服务器端可伸缩): 没

SQL Server中服务器身份验证及用户登录

安装过程中,SQL Server 数据库引擎设置为"Windows 身份验证模式"或"SQL Server 和 Windows 身份验证模式". 安装完成后,您可以随时更改身份验证模式. 如果在安装过程中选择了"Windows 身份验证模式",则 sa 登录名将被禁用,安装程序会分配一个密码. 如果稍后将身份验证模式更改为"SQL Server 和 Windows 身份验证模式",则 sa 登录名仍处于禁用状态. 若要使用 s

远程桌面连接服务器身份验证错误要求的函数不受支持

问题描述: 在远程桌面连接服务器的时候,出现以下错误 发生身份验证错误.要求的函数不受支持 而有的客户端连接到服务器没有这个问题,就是这个台客户端连接出现问题 解决方法: 一.在远程桌面客户端修改 开始运行->gpedit.msc 打开本地安全策略 策略路径:“计算机配置”->“管理模板”->“系统”->“凭据分配” 设置名称"加密 Oracle 修正"为已启用和易受攻击,并确定就可以了. 个人电脑上根本找不到"加密 Oracle 修正"这一

HTTP 请求未经客户端身份验证方案“Anonymous”授权。从服务器收到的身份验证标头为“Negotiate,NTLM”

转自:http://www.cnblogs.com/geqinggao/p/3270499.html 近来项目需要Web Service验证授权,一般有两种解决方案: 1.通过通过SOAP Header身份验证. 2.通过集成windows身份验证. 今天我就尝试了已第二种方式进行授权,首先发布Web Service到IIS,然后选择身份验证,启用Windows身份验证,禁用匿名身份验证 发布好了Web Servive就要在Client端调用了,我用的是VS2008,在client端项目引用中右

IIS身份验证和文件操作权限(一、身份验证配置)

最近有一个项目服务器需要升级,主要是Web项目.因为以前是只写代码,不管发布.所以在环境构筑方面就出现自己的知识盲点.盲点一:IIS的身份验证的作用盲点二:IIS的身份验证和文件操作权限的关系(重点)先来看看IIS帮助文档中是如何说的 通过上面的描述,有些身份验证还是不能很直观理解其作用,没关系现在,我们就从IIS配置开始来说明. 一.新建站点 1.1.新建应用程序池和添加应用程序 1.2.设置IIS身份验证 这样[匿名身份验证]就配置完成了,这次主要说的是身份验证,所以在站点配置那里就没有详细

与身份验证HTTP服务器通信(Communicating with Authenticating HTTP Servers)

本文描述了如何利用CFHTTPAuthentication API与需要身份验证的HTTP服务器通信.它解释了如何找到匹配的验证对象和证书,并将它们应用到HTTP请求,然后存储以供以后使用. 一般来说,如果一个HTTP服务器返回一个401或407响应你的HTTP请求,这表明服务器进行身份验证需要证书.在CFHTTPAuthentication API中,每个证书组存储在CFHTTPAuthentication 对象中.因此,每个不同的身份认证服务器和每个不同用户连接的服务器需要一个单独的CFHT

sql server 2008 r2 修改sa密码 通过sql server 身份验证登陆

sql server 2008 r2 修改sa密码 通过sql server 身份验证登陆 解决方法如下 通过windows 身份验证登陆后, 首先选中服务器(右键)->属性 ->安全性->服务器身份验证修改为"SQL SERVER和WINDOWS身份验证模式"其次展开服务器上的"安全性"->登陆名->选中SA登陆帐号(右键)->状态->登陆修改为启用, 并在常规选项中修改密码 确认后重启 sel server sql se

sql server 2008 windows验证改混合登陆中SqlServer身份验证用户名密码

安装过程中,SQL Server 数据库引擎设置为 Windows 身份验证模式或 SQL Server 和 Windows 身份验证模式.本主题介绍如何在安装后更改安全模式. 如果在安装过程中选择“Windows 身份验证模式”,则 sa 登录名将被禁用.如果稍后将身份验证模式更改为“SQL Server 和 Windows 身份验证模式”,则 sa 登录名仍处于禁用状态.若要启用 sa 登录帐户,请使用 ALTER LOGIN 语句. 安全说明: sa 帐户是一个广为人知的 SQL Serv

sql server 无法用sql server身份验证

1)首先,用windows身份验证进入服务器. 2)其次找到安全性,点击进入后,找到登录名为sa,然后右击属性. 3)在属性中找到常规,然后检查下自己的账号和密码,并且在状态中将登陆状态改成启用,否则禁用状态不可运行. 4)接着,点击服务器右击属性,更改安全性中的服务器身份验证,然后点击确定,会弹出一个重新启用.然后点击服务器右击重新启用.再断开连接重新用sqlserver身份登录.记住!修改确定后一定要将服务器重新启动,否则还是会有相同的问题存在,直到他显示"是否确定要重新启动sqlserve