OpenID代码示例(自用)

摘要:
将身份验证发送到OP1。//创建使用者对象,该对象将向身份验证服务器2发送身份验证请求。ConsumerManager=newConsumerManager();3.//setAssociations方法设置与OP关联的存储位置,可以存储在内存、数据库、xml或文件中。在这里,它存储在内存4.manager中。集合关联(newInMemoryConsumerAssociation
发送认证到OP
1.  //创建消费者对象,它将向认证服务器发出认证请求
2.  ConsumerManager manager = newConsumerManager();
3.  //setAssociations方法设置与OP的关联存放的位置,可以把它存在内存或者数据库或者xml或者文件中,这里将它存放在内存
4.  manager.setAssociations(newInMemoryConsumerAssociationStore());
5.  //setNonceVerifier方法设置记录response_nonce的位置
6.  manager.setNonceVerifier(new InMemoryNonceVerifier(5000));
7.  //下载OpenID提供者列表(一般只有一个提供者)
8.  List discoveries = manager.discover("https://example.com/login/openid/user/");
9.  //通过关联获取和OpenID提供者之间的共享密钥
10. DiscoveryInformation discovered =manager.associate(discoveries);  
11. //将关联(发现信息)保存,以备之后的使用
12. session.setAttribute("openid-disc", discovered);
13.  
14. //要重定向的地址
15. String returnURL = "http://example.com/openidresponse.jsp";
16. //将用户重定向到他们的OpenID提供者页面,并告诉OpenID提供者外部站点的地址
17. AuthRequest authReq =manager.authenticate(discovered, returnURL);
18. //在重定向之前添加额外的请求参数(email,fullname)
19. FetchRequest fetch =FetchRequest.createFetchRequest();
20. fetch.addAttribute("email", "http://schema.openid.net/contact/email", true);
21. fetch.addAttribute("fullname", "http://openid.net/schema/namePerson/friendly", true);
22. authReq.addExtension(fetch);
23. //重定向到OP认证
24. response.sendRedirect(authReq.getDestinationUrl(true));
接收来自OpenID提供者认证信息
1.  //获取响应参数列表
2.  ParameterList response = newParameterList(request.getParameterMap());
3.  DiscoveryInformation discovered = (DiscoveryInformation) session.getAttribute("openid-disc ");
4.  StringBuffer receivingURL =request.getRequestURL();
5.  String queryString =request.getQueryString();
6.  if (queryString != null && queryString.length() > 0)
7.      receivingURL.append("?").append(request.getQueryString());
8.  //根据参数列表,关联句柄以及url_query验证是否通过认证
9.  VerificationResult verification =manager.verify(receivingURL.toString(), response, discovered);
10. Identifier verified =verification.getVerifiedId();
11. if (verified != null) {
12.     if(authSuccess.hasExtension(AxMessage.OPENID_NS_AX)) {
13.         FetchResponse fetchResp =(FetchResponse) authSuccess.getExtension(AxMessage.OPENID_NS_AX);
14.         List emails = fetchResp.getAttributeValues("email");
15.         email = (String) emails.get(0);
16.         List fullNames = fetchResp.getAttributeValues("fullname");
17.         fullName = (String) fullNames.get(0);
18.          //success..
19.     }
20. }
21. else
22.     //OpenID authentication failed

免责声明:文章转载自《OpenID代码示例(自用)》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇vant-weapp 组件样式自定义的方法Android 多分辨率自适应总结下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

微信小程序之发送模板消息(通过openid推送消息给用户)

一、获取access_tokenaccess_token是接口调用的凭证,目前有效期为两个小时,需要定时刷新,重复获取将导致上次获取的access_token失效。(注:不建议每次调用需要access_token的接口,都去重新获取access_token,会导致失败)获取access_token的接口地址: https://api.weixin.qq.c...

H5 及 web 页面微信授权登录流程

一、事先准备工作 配置参数测试公众平台信息(测试号相关配置示例): 1、打开公众平台的测试账号 2、配置js接口安全域名 3、扫码关注测试公众号 4、修改网页授权地址 配置授权回调的域名,至于什么是OAuth2.0,大家自行百度吧。这里的域名也要与上面的域名一致。配置成功会有通过安全监测的提示,这里不上截图了。 注意: 1、这里填写的是域名(是一...

微信支付jsapi

20200701微信支付 JsApi(在手机微信中打开进行支付) 1.引入api包 下载php版本API https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=11_1 注: 1.tp5.1框架下,将API文件中子文件夹放入extend/wxpay中 2.若使用框架,请以public为当前路径,进...

微信小程序获取unionid与openid

获取unionid需要先在微信开放平台绑定小程序,否则无法获取 UnionID机制说明 unionid来区分用户的唯一性,在相同微信开放平台帐号下的移动应用、网站应用、小程序、公众号,用户的unionid是唯一的。也就是说,同一用户,对同一个微信开放平台下的不同应用,unionid是相同的。 OpenID机制说明 OpenId是用来区分应用的唯一性,在相同...

微信开发笔记:获取用户openid,以及用户头像昵称等信息

微信开发的时候有一个很便利的途径来进行一个用户的一步注册登录,就是使用用户的微信信息来直接进行登陆,可以省去很多不必要的麻烦。那具体这些信息是如何来获取的呢? 首先呢,我们需要对微信进行一个授权,让微信页面有权限来读取我们的用户信息: $redirect_uri = urlencode($url); //设置授权页面,此处填写回调的授权页面地址 $scop...

微信开放平台开发——网页微信扫码登录(OAuth2.0)

1、OAuth2.0 OAuth(开放授权)是一个开放标准,允许用户让第三方应用访问该用户在某一网站上存储的私密的资源(如照片,视频,联系人列表),而无需将用户名和密码提供给第三方应用。 允许用户提供一个令牌,而不是用户名和密码来访问他们存放在特定服务提供者的数据。每一个令牌授权一个特定的网站(例如,视频编辑网站)在特定的时段(例如,接下来的2小时内)内...