当前位置: 首页 > news >正文

做网站投注代理犯罪吗济南品牌网站建设公司

做网站投注代理犯罪吗,济南品牌网站建设公司,百度关键词优化软件,深圳宝协建设公司APIGateway的支持的认证如下#xff1a; 我们从表格中可以看到#xff0c;HTTP API 不支持资源策略的功能#xff0c;另外是通过JWT的方式集成Cognito的。 对于REST API则是没有显示说明支持JWT认证#xff0c;这个我们可以通过Lambda 自定义的方式来实现。 所以按照这个…APIGateway的支持的认证如下 我们从表格中可以看到HTTP API 不支持资源策略的功能另外是通过JWT的方式集成Cognito的。 对于REST API则是没有显示说明支持JWT认证这个我们可以通过Lambda 自定义的方式来实现。 所以按照这个说法除了资源策略各种认证方式HTTP API和REST API 都能够实现。 资源策略 noteHTTP API没有资源策略所以这个部分都都是关于REST API的。 先谈资源策略因为这个是两个API唯一不同的地方。 资源策略默认为空对于公有API来是完全放开的但是如果写了任意一条策略那么其他的策略都会变成Deny但是对于私有API来说没有资源策略则意味着完全私有。 下面是三种资源策略 允许特定的账户访问APIGateway因为访问人是账户所以这个就需要开启IAM验证。 {Version: 2012-10-17,Statement: [{Effect: Allow,Principal: {AWS: [arn:aws:iam::{{otherAWSAccountID}}:root,arn:aws:iam::{{otherAWSAccountID}}:user/{{otherAWSUserName}},arn:aws:iam::{{otherAWSAccountID}}:role/{{otherAWSRoleName}}]},Action: execute-api:Invoke,Resource: [execute-api:/{{stageNameOrWildcard*}}/{{httpVerbOrWildcard*}}/{{resourcePathOrWildcard*}}]}] }基于IP的访问策略如下。 {Version: 2012-10-17,Statement: [{Effect: Deny,Principal: *,Action: execute-api:Invoke,Resource: execute-api:/{{stageNameOrWildcard}}/{{httpVerbOrWildcard}}/{{resourcePathOrWildcard}},Condition : {IpAddress: {aws:SourceIp: [ {{sourceIpOrCIDRBlock}}, {{sourceIpOrCIDRBlock}} ]}}},{Effect: Allow,Principal: *,Action: execute-api:Invoke,Resource: execute-api:/{{stageNameOrWildcard}}/{{httpVerbOrWildcard}}/{{resourcePathOrWildcard}}}] }允许来自来自特定VPC的流量 {Version: 2012-10-17,Statement: [{Effect: Deny,Principal: *,Action: execute-api:Invoke,Resource: execute-api:/{{stageNameOrWildcard}}/{{httpVerbOrWildcard}}/{{resourcePathOrWildcard}},Condition: {StringNotEquals: {aws:sourceVpc: {{vpcID}}}}},{Effect: Allow,Principal: *,Action: execute-api:Invoke,Resource: execute-api:/{{stageNameOrWildcard}}/{{httpVerbOrWildcard}}/{{resourcePathOrWildcard}}}] }Lambda授权方 Lambda的认证方式可以自定义认证的方式以下是一个官方提供的RSET API认证的例子当然也在这个代码中实现JWT的颁发认证以及SSO中我们常用的OauthSAML和OIDC协议 。 REST API # A simple token-based authorizer example to demonstrate how to use an authorization token # to allow or deny a request. In this example, the caller named user is allowed to invoke # a request if the client-supplied token value is allow. The caller is not allowed to invoke # the request if the token value is deny. If the token value is unauthorized or an empty # string, the authorizer function returns an HTTP 401 status code. For any other token value, # the authorizer returns an HTTP 500 status code. # Note that token values are case-sensitive.import jsondef lambda_handler(event, context):token event[authorizationToken]if token allow:print(authorized)response generatePolicy(user, Allow, event[methodArn])elif token deny:print(unauthorized)response generatePolicy(user, Deny, event[methodArn])elif token unauthorized:print(unauthorized)raise Exception(Unauthorized) # Return a 401 Unauthorized responsereturn unauthorizedtry:return json.loads(response)except BaseException:print(unauthorized)return unauthorized # Return a 500 errordef generatePolicy(principalId, effect, resource):authResponse {}authResponse[principalId] principalIdif (effect and resource):policyDocument {}policyDocument[Version] 2012-10-17policyDocument[Statement] []statementOne {}statementOne[Action] execute-api:InvokestatementOne[Effect] effectstatementOne[Resource] resourcepolicyDocument[Statement] [statementOne]authResponse[policyDocument] policyDocumentauthResponse[context] {stringKey: stringval,numberKey: 123,booleanKey: True}authResponse_JSON json.dumps(authResponse)return authResponse_JSON这个是官方文档的一张图 也就是说当访问APIGatewa有的时候会带上一个凭证然后这个凭证会被传递到负责验证的Lambda中这个lambda会根据传递的请求头会返回allow或者deny的资源策略或者unauthorized的异常。 在Header中添加{Authorization: allow}是可以请求成功的。 在Header中添加{Authorization: deny}可以按照预期拦截。 在Header中添加未认证的token即不在黑白名单内的报错500 符合预期 HTTP API 然后我们再来看HTTP API由于没有资源策略所以授权方函数的代码和之前不一样。授权方的配置如下 再来看一看代码 import jsondef lambda_handler(event, context):response {isAuthorized: False,context: {stringKey: value,numberKey: 1,booleanKey: True,arrayKey: [value1, value2],mapKey: {value1: value2}}}try:if (event[headers][authorization] secretToken):response {isAuthorized: True,context: {stringKey: value,numberKey: 1,booleanKey: True,arrayKey: [value1, value2],mapKey: {value1: value2}}}print(allowed)return responseelse:print(denied)return responseexcept BaseException:print(denied)return response在Header中添加{Authorization: secretToken}是可以请求成功的。 如果在请求的时候没有添加Authorization的Header这个时候是返回401 “message”: “Unauthorized”由于我们没有在请求的时候带入身份所以会返回401。 如果传递的token不对那么会报错403 “message”: “Forbidden”。即我们传递了一个token到后端但是没有通过认证也就说没有对应的权限。 Cognito 授权 note 由于中国区没有Cognito用户池所以此功能在中国区不可用。 REST API 提供了直接集成Cognito的方式对于HTTP API而言可以使用JWT的方式来支持Cognito。 下面启动一个Cognito用户池由于是简单测试所以没有集成第三方身份提供商。 接下来设置密码策略并且关闭MFA然后下一步直接到 Step 5 Integrate your app。 使用托管UI并且设置Cognito domain的URL以及回调URL。随后我们通过内置的Cognito UI登录会调转到我们设置的回调函数同时带着我们需要的凭证。 接下来是创建用户我们接下来要我们使用这个用户登录Cognito UI。 然后编辑托管UI的配置选择Implicit grant 登录之后会跳转到我们的设置的回调函数同时会返回id_token,access_token。 设置Cognito授权方选择前面创建好的Cognito用户池然后设置加上请求头Authorization。 填写之后可以测试使用前面回调返回的id_token,这里测试之后重新部署API 然后再使用Postman再次测试。 Postman的设置如下这里添加了请求头{ Authorization ID_token } IAM 授权 IAM 认证比较特殊对于中国区而言如果你没有备案那么只能使用IAM认证的方式进行认证。 这里其实就是SignV4的算法我们可以使用Postman来做签名如下 如果你的应用需要使用SignV4访问API使用代码 import boto3 import requests from requests.auth import AuthBase from botocore.auth import SigV4Auth from botocore.awsrequest import AWSRequestclass BotoSigV4Auth(AuthBase):为 HTTP 请求创建 AWS Signature V4def __init__(self, service, region):self.service serviceself.region regionself.session boto3.Session()self.credentials self.session.get_credentials()def __call__(self, r):aws_request AWSRequest(methodr.method, urlr.url, datar.body)SigV4Auth(self.credentials, self.service, self.region).add_auth(aws_request)r.headers.update(dict(aws_request.headers.items()))return rdef main():# 配置service execute-apiregion us-east-1api_url https://你的api网关.execute-api.us-east-1.amazonaws.com/你的阶段/你的资源# 创建 requests Sessionsession requests.Session()session.auth BotoSigV4Auth(service, region)# 发送 GET 请求response session.get(api_url)# 打印响应print(Response Status Code:, response.status_code)print(Response Text:, response.text)if __name__ __main__:main()JWT 授权 note 这个部分属于HTTP API的认证REST API 由于OIDC协议使用JWT作为中间凭证所以在这里可以使用Auth0来代替JWT的颁发商。配置如下 在Applications - APIS中新建API 然后这个时候auth0 会自动生成一个Application后续我们会使用这个Application的Client ID和Secret ID以及Domain的信息来登录。 也就是说这三个信息确定了一个身份池然后符合规则的用户可以通过这个身份池来换取JWT。可以在Applications-Applications 中看到。 配置好之后可以通过Auth0的API来拿到登录后的JWT以下是一个官方给的教程可以用来测试功能当然也可以集成到APP中。 APIGateway 的Authorization 配置如下 auth0 也提供了实例代码供我们测试 官方提供的代码很烂这个功能完全可以使用requests来实现代码如下 import requestsurl https://xuhan.au.auth0.com/oauth/tokenpayload {client_id: iiptrnicFRTaDduDsWQ6W9WlHm0cdvMp,client_secret: POQsksHOg3330gITitO4-7B_wYBID8xgMN9-Tz8Asp8R6PbXxSg1vq6De8HoIn7p,audience: https://auth0-jwt-authorizer,grant_type: client_credentials }headers {content-type: application/json}response requests.post(url, jsonpayload, headersheaders)print(response.text)然后可以使用Postman来进行验证其实就是在请求头中加上了Authorization: Bearer your JWT这样是可以通过客户端加上凭证范访问APIGateway. APIKEY APIKEY本来是用来做限流的功能比如说某个服务会提供API给开发者使用但同时又不希望开发者滥用这样的凭证所以才有了这个功能。很多人会把这个当成限制匿名用户的一部分虽然这样的解释没有问题但是APIKEY的作用仍然是做限流而不是认证。 对于REST API来说APIKEY通常与使用计划关联然后再再特定的路由中启动APIKEY。在使用计划中写明Burst limit和Rate limit以及每天或者每月的额度。然后在请求头中带上x-api-key: your apikey 速率限制Burst limit 设计用来控制较长时间尺度如每秒内的平均请求量确保服务的稳定性和可靠性防止 API 被过度使用。 突发限制Rate limit 设计用来处理短时间内的高流量突发允许在极短的时间窗口内接受较多请求但不应持续太久以避免服务器资源被迅速耗尽。 使用Python多进程测试代码如下实测达到任意限制都会报错 429 {“message”:“Too Many Requests”} import requests from multiprocessing import Pooldef make_request(url):headers {x-api-key: your key api}response requests.get(url, headersheaders)if response.status_code ! 200:return fRequest failed. Status: {response.status_code} Response: {response.text}return Request successful.def main():url your urlprocess_count 100 # 你可以根据需要调整进程数量with Pool(process_count) as p:results p.map(make_request, [url] * 10) # 发送10次请求# 打印出所有结果包括成功和失败的for result in results:print(result)if __name__ __main__:main() 对于HTTP API 来说则是直接在阶段设置就可以同样可以达到限流的效果。 最后关于中国区 中国区有一个特殊的流程叫做ICP备案, 如果没有进行备案的话那么无论是公网访问还是内网访问都会遇到如下的401报错 {message: null }当然如果使用自定义域名的话那么域名也需要备案。
http://www.pierceye.com/news/770626/

相关文章:

  • 手机网站 设计趋势建设银行暑期招聘网站
  • 兰山做网站专业深圳网站定制开发
  • 做与食品安全有关的网站徐州企业网站设计
  • 番禺网站建设策划江阴市建设局官网站
  • 建设网站模块需要哪些内容石家庄城乡建设厅网站
  • 公司网站后台管理网络公司名字大全三字
  • 广西住房建设厅网站广州seo工作
  • 做分销商城网站的wordpress 知更鸟 网格
  • 推销商务网站的途径有哪些爱网站查询挖掘工具
  • 苏州现代建设公司网站备案的域名做电影网站
  • 长沙seo网站优化公司wordpress5.1下载
  • 七星彩网投网站建设鹤壁公司做网站
  • 多语言企业网站建设费用怎么自己做购物网站
  • 中国网站排名前100线上网站开发相关书籍
  • 网站制作图书网站建设指南
  • 网站备案简单吗优化关键词排名软件
  • 泉山网站开发安徽建设工程造价信息网
  • 如何使用电子商务网站做seo需要用到什么软件
  • 新乡商城网站建设哪家专业潮汕学院网站开发
  • 西安响应式网站开发网站空间多少钱一年
  • 做电子相册的大网站怎样提高网站的权重
  • seo网站设计外包去哪个网站有客户找做标书的
  • 微商招商网站源码互联网营销推广方案
  • 深圳做网站服务公司河北石家庄最新新闻
  • 山东济南seo整站优化唐山网站建设那家性价比高
  • c 可以做哪些网站小说网站建设采集
  • 公司网站备案条件高校网站集群平台子站开发
  • 制作网站能赚钱吗单位发购物或电影卡有哪些app
  • 我们网站在那里登陆后台系统管理网站建设服务咨询
  • 免费上传图片的网址网站seo工作内容