欢迎来到装配图网! | 帮助中心 装配图网zhuangpeitu.com!
装配图网
ImageVerifierCode 换一换
首页 装配图网 > 资源分类 > DOCX文档下载
 

访问控制实验报告.

  • 资源ID:147361969       资源大小:13.40KB        全文页数:9页
  • 资源格式: DOCX        下载积分:15积分
快捷下载 游客一键下载
会员登录下载
微信登录下载
三方登录下载: 微信开放平台登录 支付宝登录   QQ登录   微博登录  
二维码
微信扫一扫登录
下载资源需要15积分
邮箱/手机:
温馨提示:
用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
支付方式: 支付宝    微信支付   
验证码:   换一换

 
账号:
密码:
验证码:   换一换
  忘记密码?
    
友情提示
2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

访问控制实验报告.

访问控制实验报告访问控制实验报告 刘唯墨08283013一、实验介绍谈到访问控制,或者说“授权”,这里有两 层含义,一是从资源的角度,这个socket端口是否被允许操 作二是从访问者的角度,我想通过80端口看Web上的新闻, 在这个系统中有没有这个资格我想播放D盘上的视频文件, 我得到了访问这个文件的权限了吗我有运行播放器的权限 吗所以就要提及访问权限。二、实验目的实现访问控制,并理解其内容和作用。三、实验内容1、选择一个软件系统,在其基础代码上 实施自主访问控制。2、明确自主访问控制的对象。3、实现自主访问控制授权管理的8个基本操作。包括授权,取消授权等,须支持级联授权撤销,授权继 承,否定授权等。4、实现自主访问控制实施模块。四、实验步骤 javax.security.auth.Subject Subject 表征系 统中一个认证的用户,这个词时而被译为“主题”时而被以为 “主体”对系统的访问就体现为Subject.doAs或Subject.doAsPrivileged 方法。-java.security.Principal Principal 代表用户的一种身份对 象,一个用户的身份可能不只一个,他所在的组或所担任的 角色也是一种身份。通过一次登录后,可能向Subject插入一个或多个 Principal,这时候Subject才有实际意义,而不是一个空壳。 javax.security.auth.login.LoginContext LoginContext 旨 在提供一个开放的登录总接口,你只需要用从策略文件中取 得的策略名,以及下面介绍的回调对象创建得到一个 LoginContext,再调用一次login方法即可完成登录,登录模 块在这里是透明的。 javax.security.auth.spi.LoginModule 登录模块实现了 对用户的认证逻辑,它的作用是在登录配置文件中得到体 现,在后面的例子里我们会看到怎么编写一个登录配置文件 以及上面说过的策略文件。LoginModule接口包括五个主要的方法initialize方法, 初始化模块,保存当前Subject以及一些参数。login方法,判断一次登录过程中是否认证通过。commit方法,是否提交登录结果 logout方法注销过 程,清除内部状态,并删除Subject中全部的Principal abort 方ty.PrivilegedAction上面说了那么多登录相关的接口,该说说 授权了,如果我们只谈写源代码,那么很简单,只要实现一 个PrivilegedAction接口,覆盖一个run方法,把你想要做的 事情统统放到这个run中就可以了。五、实验代码 / MyPrincipal.java package com.jungleford.auth; import java.security.Principal; public class MyPrincipal implements Principal / 一个 Principal 的例子 private String name; / Principal 的名字 public MyPrincipalString name this.name name; public String getName /取得 Principal 的名字 return this.name; public boolean equalsObject principal / 判断两个 Pincipal 相同的 依据 if principal instanceof MyPrincipal return this.name.equalsMyPrincipalprincipal.getName; else return false; public String toString / Principal 的表示 return “MyPrincipal “ this.name; public int hashCode /确定本 对象的散列值 return this.name.hashCode; / MyLoginModule.java package com.jungleford.auth; import java.util.*; import java.io.IOException; import java.security.Principal; import javax.security.auth.*; import javax.security.auth.callback.*; import javax.security.auth.login.*;import javax.security.auth.spi.*; public class MyLoginModuleimplements LoginModule / 一个登录模块的例子 private Subject subject; / 登录主体的表征 private CallbackHandler cbHandler; /回调对象,提供终端下获取用户名、口令的界 面private Map sharedState; /用于缓存中间结果的共享区 private Map options; /用于保存某些登录模块所需要用到的 一些配置选项 private boolean succeeded false; / 一次 login 成功的标志 private boolean cmtSucceeded false; / 整体登 录成功的提交标志 private String username; /取得用户名 private char password; / 取得口 令 private Principal principal; /取得登录后的身份标志 public void initializeSubject subject, CallbackHandler cbHandler, Map sharedState, Map options / 初始化过程System.out.println“Login module initializing .“; System.out.println; this.subject subject; this.cbHandler cbHandler; this.sharedStatesharedState; this.optionsoptions; public boolean login throws LoginException / 一 次登录过程if cbHandler null /尚未配置回调对象throw new LoginException“Error No CallbackHandler available “ “to garner authentication information from the user“; Callback cbs new Callback2; / 仅使用用户名回调和口 令回调 cbs0 new NameCallback“Login “; cbs1 newPasswordCallback“Password “, false; try cbHandler.handlecbs;username NameCallbackcbs0.getName; char tempPasswordCallbackcbs1.getPassword; if temp null / 口令为空 temp new char0; password new chartemp.length; System.arraycopytemp, 0, password, 0, temp.length; PasswordCallbackcbs1.clearPassword; / 清除内存中的口令 痕迹 catch IOException ioe throw new LoginExceptionioe.toString;catchUnsupportedCallbackException uce throw new LoginException“Error “ uce.getCallback.toString “ not available to garner authentication information “ “from the user“; boolean usrCorrect false; / 用户名正确否 boolean pwdCorrect false; / 口令正确否 if username.equals"user“ / 目前仅允许用户名为user的登录usrCorrect true; if usrCorrect System.out.println; pwdCorrect true; succeeded true; return true; / 一次登录成功 else System.out.println“MyLoginModule Authentication failed“; System.out.println; succeeded false; username null; for int i 0; i Available name “ “user", “Enter your name", JOptionPane.QUESTION_MESSAGE; String password JOptionPane.showInputDialognull, “Available password “letmepass", “Enter your password",JOptionPane.QUESTION_MESSAGE; for int i 0; i cbs.length; i if cbsi instanceof TextOutputCallback TextOutputCallback toc TextOutputCallbackcbsi; switchtoc.getMessageTypecaseTextOutputCallback.INFORMATIONSystem.out.printlntoc.getMessage;break;caseTextOutputCallback.ERRORSystem.out.println“Error“ toc.getMessage; break; case TextOutputCallback.WARNING System.out.println“Warning “ toc.getMessage; break; default throw new IOException“Unsupported message type “ toc.getMessageType; else if cbsi instanceof NameCallback / prompt the user for a username NameCallback ncNameCallbackcbsi;/System.err.printnc.getPrompt;/System.err.flush;nc.setNameusername; else if cbsi instanceof PasswordCallback / prompt the user for sensitive information PasswordCallback pcPasswordCallbackcbsi;/System.err.printpc.getPrompt;/System.err.flush;pc.setPasswordpassword.toCharArray; else throw new UnsupportedCallbackExceptioncbsi,“UnrecognizedCallback" /MyAction.java package com.jungleford.auth; import java.io.*; import java.security.*; public class MyAction implements PrivilegedAction /对资源的授权访问动作public Object run / run 方法是必须 overriding 的 / 这里我 们假设访问动作是读取当前目录下 myfile.txt文件的内容 File file new File“myfile.txt“; String content “; try BufferedReader reader new BufferedReader new FileReaderfile; String line reader.readLine; while line null content line “n“; line reader.readLine; catch Exception e System.err.println“Error Reading file failed" System.err.println; e.printStackTrace; return content; /JAASTest.java package com.jungleford.auth; import javax.security.auth.Subject;importjavax.security.auth.login.LoginContext; public class JAASTest /测试我们JAAS登录和授权的shell public static void mainString args LoginContext lc null; try / 仓0建 context,使用自定义的回调对象,策略名为JAASTest /简 单起见,仅使用一个 MyLoginModule模块lc new LoginContext“JAASTest“,new MyCallbackHandler; catch Exception e System.err.println“Error Creating login context failed" System.err.println; e.printStackTrace; System.exit-1; try / 整体登录 lc.login; catch Exception e System.err.println“Error Login failed" System.err.println; e.printStackTrace; System.exit-1; / 获得授权访问 Object object Subject.doAslc.getSubject, new MyAction;System.out.println“Access successfully Reading file"System.out.println“;System.out.printlnobject;System.out.println"" System.exitO; ) /login.conf JAASTest com.jungleford.auth.MyLoginModule required; ; /jaas.policy grant permission javax.security.auth.AuthPermission “createLoginContext"permissionjavax.security.auth.AuthPermission "doAs"; permission javax.security.auth.AuthPermission"modifyPrincipals"permission javax.security.auth.AuthPermission "getSubject" ; grant principal com.jungleford.auth.MyPrincipal "guest" permission java.io.FilePermission "myfile.txt","read" ;六、实验分析由于java对环境配置非常复杂,在安装过 openssl密码库,改变环境变量之后,这个代码编译无错但是 始终运行不出来,并且始终找不到原因。由于时间有限,没来的及把所有的内容实现。不过已经实现了简单的访问控制。由于实验的难度,代码部分借鉴了网络上的一些内容, 并结合了在之前操作系统课和java智能卡课中的内容,但是 在搜索资料的过程当中,让我了解了更多。七、实验心得 通过本次试验,对访问控制有了一定了解。但是由于对java语言的不熟悉和气复杂性,本次实验始 终运行不出来。但是在编译代码的过程中,对访问控制的个方面问题都 有了一定的认识。

注意事项

本文(访问控制实验报告.)为本站会员(suij****uang)主动上传,装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知装配图网(点击联系客服),我们立即给予删除!

温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!