openid

微信小程序静默授权的两种方式

江枫思渺然 提交于 2020-04-23 04:57:11
微信小程序授权的两种方式 解密授权 wx.getUserInfo API文档地址 js_code授权 auth.code2Session 服务端文档 小程序测试号地址 地址 这里进行扫码登陆的时候注意,如果登陆上去,没有appId等信息,就请先登陆微信开放社区,然后在打开测试号进行查看 第一种需要小程序前端调用登陆,在调用获取用户信息接口,获取到用户信息的rawData,和其他解密信息,服务段负责进行解密。 第二种是,小程序前端调用了登陆接口以后,返回code值,后端根据code,在服务段请求微信的接口,返回openId 第一种获取到信息进行解密 public static JSONObject getUserInfo(String encryptedData, String sessionKey, String iv){ // 被加密的数据 byte[] dataByte = Base64.decode(encryptedData); // 加密秘钥 byte[] keyByte = Base64.decode(sessionKey); // 偏移量 byte[] ivByte = Base64.decode(iv); try { // 如果密钥不足16位,那么就补足. 这个if 中的内容很重要 int base = 16; if (keyByte.length % base !

eShopOnContainers 知多少[3]:Identity microservice

二次信任 提交于 2020-04-22 05:19:41
首先感谢晓晨Master和EdisonChou的审稿!也感谢正在阅读的您! 引言 通常,服务所公开的资源和 API 必须仅限受信任的特定用户和客户端访问。那进行 API 级别信任决策的第一步就是身份认证——确定用户身份是否可靠。 在微服务场景中,身份认证通常统一处理。一般有两种实现形式: 基于API 网关中心化认证 :要求客户端必须都通过网关访问微服务。(这就要求提供一种安全机制来认证请求是来自于网关。) 基于安全令牌服务(STS)认证 :所有的客户端先从STS获取令牌,然后请求时携带令牌完成认证。 而本节所讲的Identity microservice就是使用第二种身份认证方式。 服务简介 Identity microservice 主要用于统一的身份认证和授权,为其他服务提供支撑。 提到认证,大家最熟悉不过的当属Cookie认证了,它也是目前使用最多的认证方式。但Cookie认证也有其局限性:不支持跨域、移动端不友好等。而从当前的架构来看,需要支持移动端、Web端、微服务间的交叉认证授权,所以传统的基于Cookie的本地认证方案就行不通了。我们就需要使用远程认证的方式来提供统一的认证授权机制。 而远程认证方式当属:OAuth2.0和OpenID Connect了。借助OAuth2.0和OpenID Connect即可实现类似下图的认证体系: 而如何实现呢,借助: ASP.NET

Asp.net Core 系列之--5.认证、授权与自定义权限的实现

让人想犯罪 __ 提交于 2020-04-22 05:19:20
ChuanGoing 2019-11-24   asp.net core系列已经来到了第五篇,通过之前的基础介绍,我们了解了 事件订阅/发布的eventbus 整个流程, 初探dapper ORM 实现,并且简单的介绍了 领域模型、领域仓储及服务 实现,结合上一篇的 日志、错误处理及事务 和本篇将要介绍的权限,大致的可以形成一个简单的后端系统架构。当然这些都是零散的一些技术概念的介绍,后面如果有时间的话,我想详细的介绍下如何利用领域驱动来实现一个实际案例。 话不多讲,下面来看下本篇的学习曲线: 1.认识Identityserver4 2.Identityserver4实现认证与授权 3.自定义权限的实现 认识Identityserver4   关于Identityserver4(ids4)的概念介绍,请查看 IdentityServer4 知多少-简书 一文。我这里要说的是,asp.net core 下的ids4集成了认证与授权两大功能,使得我们非常方便的实现一个开放的认证与授权平台,比如公司内部多个系统的集成登录(单点登录)/第三方系统数据共享/统一的认证中心等。整个业务流程大致为: 1.用户首先的有用户中心的账号信息,因此需要注册一个账号 2.用户访问某个站点应用,需要去到用户中心认证 3.认证通过,用户得到其在用户中心注册的相应信息及其权限时限、范围、大小 4.认证不通过

IdentityServer4 QuckStart 授权与自定义Claims

血红的双手。 提交于 2020-04-22 05:00:54
最近在折腾IdentityServer4,为了简单,直接使用了官方给的QuickStart示例项目作为基础进行搭建。有一说一,为了保护一个API,感觉花费的时间比写一个API还要多。 本文基于ASP.NET CORE 3.1, IdentityServer4 3.1.3。代码皆为关键代码,贴全了太多了。 好不容易跑起来了,最终的任务要落实到授权的工作上来。在API中使用 Authorize 用来限制用户的访问。 [Route("api/[controller]")] [Authorize(Roles = "Administrator")] [ApiController] public class UserInfoController : ControllerBase { /// <summary> /// 无参GET请求 /// </summary> /// <returns></returns> [HttpGet()] [ProducesResponseType(typeof(ReturnData<IEnumerable<UserInfo>>), Status200OK)] public async Task<ActionResult> Get() { var info = new Info<UserInfo>(); return Ok(new ReturnData

微信支付

偶尔善良 提交于 2020-04-21 15:55:05
<?php namespace WxPay; /** 微信支付 */ class wxpay{ private $pay_url = ' https://api.mch.weixin.qq.com/pay/unifiedorder '; // 统一支付地址 private $h5_pay_url = ' https://api.mch.weixin.qq.com/pay/unifiedorder '; // H5支付地址 private $h5_order = ' https://api.mch.weixin.qq.com/pay/orderquery '; // H5支付订单查询地址 private $refund_url = ' https://api.mch.weixin.qq.com/secapi/pay/refund '; // 退款地址 private $transfers = ' https://api.mch.weixin.qq.com/mmpaymkttransfers/promotion/transfers '; // 企业付款到零钱 需支付证书 // 证书文件放在与入口文件同级的cert目录下 private $SSLCERT_PATH = 'cert/apiclient_cert.pem'; // api证书路径 private $SSLKEY_PATH =

IdentityServer4 QuckStart 授权与自定义Claims

≡放荡痞女 提交于 2020-04-21 02:13:36
最近在折腾IdentityServer4,为了简单,直接使用了官方给的QuickStart示例项目作为基础进行搭建。有一说一,为了保护一个API,感觉花费的时间比写一个API还要多。 本文基于ASP.NET CORE 3.1, IdentityServer4 3.1.3。代码皆为关键代码,贴全了太多了。 好不容易跑起来了,最终的任务要落实到授权的工作上来。在API中使用 Authorize 用来限制用户的访问。 [Route("api/[controller]")] [Authorize(Roles = "Administrator")] [ApiController] public class UserInfoController : ControllerBase { /// <summary> /// 无参GET请求 /// </summary> /// <returns></returns> [HttpGet()] [ProducesResponseType(typeof(ReturnData<IEnumerable<UserInfo>>), Status200OK)] public async Task<ActionResult> Get() { var info = new Info<UserInfo>(); return Ok(new ReturnData

SpringBoot 整合 Jpa

烈酒焚心 提交于 2020-04-20 16:12:36
项目目录结构 pom文件   <? xml version="1.0" encoding="UTF-8" ?> < project xmlns ="http://maven.apache.org/POM/4.0.0" xmlns:xsi ="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation ="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" > < modelVersion > 4.0.0 </ modelVersion > < groupId > com.bodi </ groupId > < artifactId > onlineretailers </ artifactId > < version > 0.0.1-SNAPSHOT </ version > < packaging > war </ packaging > < name > onlineretailers </ name > < description > Demo project for Spring Boot </ description > < parent > < groupId > org.springframework

PHP实现微信网页登陆授权开发

时光总嘲笑我的痴心妄想 提交于 2020-04-20 10:11:02
这篇文章主要介绍了关于PHP实现微信网页登陆授权开发,有着一定的参考价值,现在分享给大家,有需要的朋友可以参考一下 更多PHP相关知识请关注我的专栏 PHP ​zhuanlan.zhihu.com 微信开放平台和公众平台的区别 1.公众平台面向的时普通的用户,比如自媒体和媒体,企业官方微信公众账号运营人员使用,当然你所在的团队或者公司有实力去开发一些内容,也可以调用公众平台里面的接口,比如自定义菜单,自动回复,查询功能。目前大多数微信通过认证之后,都在做这个事情。 2.开放平台面向的开发者和第三方独立软件开发商。我觉得开发平台最大的开放就是微信登录。当年腾讯没有花大力气去做统一登录这个事情,导致目前各个网站都要弄一套登录机制。好在他们现在认清了局势。开发者或软件开发商,通过微信开放提供的平台和接口,可以开发适合企业的电子商务网站,扫描二维码进去一个游戏界面,然后去购买商品等。当然后续开放平台要开放支付接口,那么类似口袋通这种软件开发厂商,就可以为大型,中小企业提供微信小店这种服务和软件了。 公众平台就是服务号订阅号的管理开发后台。 开发平台说得通俗一点就是实现手机里边安装软件的内容一键分享朋友圈; 下面的第三方登陆就是依托于开放平台( http:// open.weixin.qq.com )的功能 准备工作 网站应用微信登录是基于OAuth2.0协议标准构建的微信OAuth2

微信小程序 获取手机号 JavaScript解密

谁说我不能喝 提交于 2020-04-20 09:47:20
当我们在开发微信小程序中,有一个常用的功能,就是获取用户的手机号,然后一键登入小程序,那么手机号如何获取呢?请认真看完本文,保证可以获取到用户的手机号。 刚开始开发微信小程序的时候,想着实现手机验证码登入,后来查阅资料得知,发给用户的短信是要自己付费的。后来想想,微信获取用户的手机号一样可以保证手机号码的真实性,因为手机号既然可以绑定微信,那么肯定是被严格核验过的,然后就开始了获取手机号之旅,网上教程有很多,但不知什么原因,都是会少一些内容,有的只有前端代码,没有后端;有的后端代码是PHP,不是我们想要的 Java 或者JavaScript。我抱着开源的思想,给大家分享我获取手机号的办法,希望能帮到大家。 首先我们可以去看一看 官方文档 ,获取手机号大致分为以下四步: 第1步:使用wx.login接口获取code(临时数据) 第2步:使用第一步的code,获取session_key和openid(确认用户唯一的数据) 第3步:使用getPhoneNumber接口,获取iv和encryptedData(获取加密的数据) 第4步:解密返回数据,获取手机号码(解密后的数据) 下面详细讲解: 第一步:使用wx.login接口获取code(临时数据) 官方文档是这么写的: 获取微信用户绑定的手机号,需先调用wx.login接口。 因为需要用户主动触发才能发起获取手机号接口,所以该功能不由

Asp.net UseOpenIdConnectAuthentication not working in Azure

若如初见. 提交于 2020-04-17 05:44:31
问题 I am using UseOpenIdConnectAuthentication to authenticate users. My application code works fine locally. But, when I run it on Azure, the SecurityTokenValidated event is never fired. Consequently, the code runs fine but the user is never authenticated. I am not sure if the issue is with my code or with Azure. This is being used in a Web Form, Asp.net application (not Core). I use the Azure trace feature to log. I can see that only "RedirectToIdentityProvider" is fired. No other event gets