Hunt Shiro

D 语言安全认证框架
授权协议 Apache
开发语言 D语言
所属分类 程序开发、 安全相关框架
软件类型 开源软件
地区 国产
投 递 者 吉栋
操作系统 跨平台
开源组织
适用人群 未知
 软件概览

Hunt Shiro 是完整的 apache shiro 的 D 语言翻译版本,代码全部使用 DLang 实现。

Shiro 是一个功能强大且灵活的开源安全框架,主要功能包括用户认证、授权、会话管理以及加密。

Shiro 的首要目标是易于使用和理解。系统安全是非常复杂甚至痛苦的,但 Shiro 并不是。一个框架应该尽可能的隐藏那些复杂的细节,并且公开一组简洁直观的API以简化开发人员在系统安全上所付出的努力。

你可以通过 Shiro 完成下面这些事情:

  • 验证用户身份
  • 控制用户访问,例如:
    • 确定用户是否被分配某个角色
    • 确定用户是否被允许做某些操作
  • 在任何环境下使用 Session API,甚至是在脱离 web 的环境下
  • 及时响应在认证、访问控制或会话生命周期内的所有事件
  • 从一个或多个数据源聚集用户安全数据生成一个复合的用户“视图”
  • 实现单点登录功能
  • 实现“记住我”功能,使用户不必每次都要登录

除了上面这些功能,还有其他很多功能,所有这些功能都集成到了一组易于使用的API中。

Shiro试图在所有应用环境实现这一目标。在不强制依赖其他第三方框架、容器或者应用服务器的情况下,从最简单的命令行应用到最复杂的企业级应用。Shiro可以和这些第三方框架、容器或者应用服务器集成使用,也可以离开这些环境单独使用。

Shiro 的特点

Shiro 是一个功能丰富的综合安全框架。下面这张图展示了Shiro的主要特点:

 

这些特点被 Shiro 开发团队称之为“应用安全的四大基石”——认证、授权、会话管理和加密:

  • 认证:有时候被称作“登录”,也就是验证一个用户是谁。
  • 授权:处理访问控制,例如决定“谁”可以访问“什么”资源。
  • 会话管理:管理特定用户的会话,甚至在非web环境或非EJB应用环境下。
  • 加密:在保持易用性的同时使用加密算法保持数据的安全。

除开上面这些功能,Shiro 还提供了一些额外的功能来支持和加强在不同应用环境下使用上面这些功能,特别是:

  • Web支持:Shiro 的 web api可 以帮组 web 应用非常方便的提高安全性。
  • 缓存:缓存可以让 Shiro 的 api 在安全操作上的保持快速和高效。
  • Concurrency: 通过Shiro的并发特性 Shiro 可以支持多线程应用。
  • Testing:通过编写单元测试和集成测试来确保代码的安全性。
  • “Run As”:允许用户使用另一个用户的身份(如果允许),在有些管理场景非常有用。
  • “Remember Me”:通过 session 记住用户身份。
  • https://codeforces.com/problemset/problem/979/B 题意翻译 在一场盛大的生日派对后,Katie(以下简称Ka)仍然想和Shiro(以下简称S)去找更多的乐子。不一会,她就想到了一个游戏,叫做寻宝。当然,她邀请了她最好的朋友Kuro(以下简称Ku)和S和她一起玩。 三个朋友都很聪明所以他们很快的通过了所有挑战并且终于到达了终点。但是宝藏只能属于一只猫(主

  • B. Treasure Hunt time limit per test 1 second memory limit per test 256 megabytes input standard input output standard output After the big birthday party, Katie still wanted Shiro to have some more f

  • 在一场盛大的生日派对后,Katie(以下简称Ka)仍然想和Shiro(以下简称S)去找更多的乐子。不一会,她就想到了一个游戏,叫做寻宝。当然,她邀请了她最好的朋友Kuro(以下简称Ku)和S和她一起玩。 三个朋友都很聪明所以他们很快的通过了所有挑战并且终于到达了终点。但是宝藏只能属于一只猫(主角们都是猫),所以他们开始想个决定宝藏归属的法子。很快的,Ku带着一些丝带前来。 每只猫都被发放了一条随机

  • B. Treasure Hunt time limit per test 1 second memory limit per test 256 megabytes input standard input output standard output After the big birthday party, Katie still wanted Shiro to have some more f

  • B. Treasure Hunt time limit per test 1 second memory limit per test 256 megabytes input standard input output standard output After the big birthday party, Katie still wanted Shiro to have some more f

  •  题目链接 : B Treasure Hunt 代码: #include<bits/stdc++.h> using namespace std; const int maxn=1e5+10; typedef long long ll; char str[maxn]; int value[5]; int main(){ int n; scanf("%d",&n);

  • 【链接】 我是链接,点我呀:) 【题意】 每次你可以将一个字符变成一个不同于本身的字符. 每个人需要改变n次(且不能不改变) 设每个人的字符串中出现次数最多的字符出现的次数为cnt[0~2] 问你谁的cnt值最大 如果最大的两个cnt相同 输出draw 【题解】 模拟就好 注意这种情况(n=1) 1 aaa aab 第一个人因为必须要改变一个,所以cnt最大为2 第二个人则为3 【代码】 impo

  • 题意: 给出三个字符串,每个字符串长度相同,给出n,要求在n轮内,每一个字符串必须改变一个字符。 问最后哪个字符串中拥有最多相同的字符,即美丽度最大。 思路: 首先,很不容易想到的一点是从a变到a,有两种方式a -> 其它 -> a,或者a -> 其它 -> 其它 -> a,即变2次或者变3次。 变3次是有意义的,比如第86个样例(wa在第86): 3 aaaaa aaaaa aaaab 答案是d

  • 原题链接 这道题的题意是这样的:三个人有三个字符串,一共N个回合,每个回合必须将其中一个字母变成不同的字母,问N轮之后,谁的字符串中相同的子串个数最多。 解法很SB的,先贪心的找到原来的串里最多的那个字母,然后我们肯定用这个字母。那么最后的答案就是字符串的长度和这个最大值加上回合数的最小值。 但是,如果一个串找到的最大值等于这个串的长度时,我们就要考虑一下。如果我们要保存这个串的最大值,可以让其中

  • 题目链接:Treasure Hunt 题意 Kuro K u r o 、 Shiro S h i r o 和 Katie K a t i e 三人都有一个长度相同的字符串,每个字符串都只包含小写字母和大写字母,三个人都有 n n 次对自己的字符串进行操作的机会,每次操作可以选择一个字符并将这个字符修改成另一个字符。一个字符串的价值定义为这个字符串中所有子串出现的最大次数,他们三人经过 nn 轮操作

  • 题目描述 After the big birthday party, Katie still wanted Shiro to have some more fun. Later, she came up with a game called treasure hunt. Of course, she invited her best friends Kuro and Shiro to play w

  • B. Treasure Hunt time limit per test 1 second memory limit per test 256 megabytes input standard input output standard output After the big birthday party, Katie still wanted Shiro to have some more f

  • 题目地址:http://codeforces.com/contest/979/problem/B 题目: After the big birthday party, Katie still wanted Shiro to have some more fun. Later, she came up with a game called treasure hunt. Of course, she i

  • B. Treasure Hunt time limit per test 1 second memory limit per test 256 megabytes input standard input output standard output After the big birthday party, Katie still wanted Shiro to have some more f

  • 【链接】 我是链接,点我呀:) 【题意】 在这里输入题意 【题解】 我们考虑每个字符串中出现最多的字母出现的次数cnt[3] 对于这3个cnt的值。 如果cnt+n<=s[i].size 那么显然最多能出现cnt+n次这个字母 但是如果cnt+n>s[i].size() 那就有问题了。 因为每次变换的字母不能和原来的一样。 因此全都变成某个字母之后。接下来肯定会破坏这个全都一样的性质。 所以我们可

  • Treasure Hunt 题 意:有三个人玩一个游戏,每个人都已一串字符串si,有n轮操作,每轮操作,每个人都可以将自己的字符串中的一个值变成令一种(不同于修改之前的),问n轮操作之后,每个人的字符串的字串在字符串中重复次数最多的是那个。如果有至少有两个最大则输出”Draw”,如果第一个最大输出”Kuro” ,第二个最大输出”Shiro”,第三个最大输出”Katie”。 数据范围: 0<=n<=

  • B. Treasure Hunt time limit per test 1 second memory limit per test 256 megabytes input standard input output standard output After the big birthday party, Katie still wanted Shiro to have some more f

 相关资料
  • gRPC 被设计成可以利用插件的形式支持多种授权机制。本文档对多种支持的授权机制提供了一个概览,并且用例子来论述对应API,最后就其扩展性作了讨论。 马上将会推出更多文档和例子。 支持的授权机制 SSL/TLS gRP 集成 SSL/TLS 并对服务端授权所使用的 SSL/TLS 进行了改良,对客户端和服务端交换的所有数据进行了加密。对客户端来讲提供了可选的机制提供凭证来获得共同的授权。 OAut

  • Cookies 和 secure cookies 你可以使用 set_cookie 方法在用户的浏览器中设置 cookies: class MainHandler(tornado.web.RequestHandler): def get(self): if not self.get_cookie("mycookie"): self.set_cooki

  • 包括平台认证体系架构和安全告警等内容。 认证体系 认证体系主要包括认证源、域、项目、组、用户、权限、角色等信息。 安全告警 安全告警即实时监测系统中的安全告警事件,如异常登录等,当发现安全问题后,将会及时通知管理员用户进行处理等。

  • 介绍安全检查、安全告警、操作日志的内容。 安全检查 平台会根据系统内置规则扫描下图中的安全性较低的资源,用户可以按照费用优化处理资源,提升平台资源的安全性。详情请参考认证与安全-安全检查。 安全告警 安全告警即实时监测系统中的安全告警事件,如异常登录等,当发现安全问题后,将会及时通知管理员用户进行处理等。目前仅支持异常登录的安全告警事件,当用户连续登录失败后被锁定将会发送安全告警记录发送给锁定用户

  • 概述 Istio Auth的目标是提高微服务及其通信的安全性,而不需要修改服务代码。它负责: 为每个服务提供强大的身份,代表其角色,以实现跨集群和云的互通性 加密服务间通信和终端用户到服务的通信 提供密钥管理系统来自动执行密钥和证书的生成、分发、轮换和撤销 架构 下图展示Istio Auth架构,其中包括三个主要组件:身份、密钥管理和通信安全。它描述了Istio Auth如何用于加密服务间通信,在

  • 通过本任务,将学习如何: 验证Istio双向TLS认证配置 手动测试认证 开始之前 本任务假设已有一个Kubernetes集群: 已根据Istio安装任务安装Istio并支持双向TLS认证。 注意,要在”Installation steps“中的第5步选择”enable Istio mutual TLS Authentication feature”。 验证Istio双向TLS认证配置 以下命令假

  • 我正在研究云应用程序的身份验证服务部分,我创建了以下安全配置类。 我不太清楚configure(HttpSecurity http)方法的链方法。身份验证服务将只接收“登录”和“注册”请求。 由于未授权任何内容,是否应删除authorizeRequests()方法? 我不确定anyRequest().Authenticated()部分是否真的需要?

  • 我使用Spring安全核心插件。我想在用户登录后立即将对象放入会话中。到目前为止,我发现插件中有。它有一个称为的方法,它似乎在成功进行身份验证后被调用。所以我决定创建另一个LoginController,它扩展了默认控制器并覆盖了此方法: 但是调试表明这个方法从来没有被调用过。出了什么问题?可能有另一种方法来做我想做的事吗?谢谢大家!