设为首页 收藏本站
查看: 1025|回复: 0

[经验分享] Moss/sharepoint 匿名访问之看例做题

[复制链接]

尚未签到

发表于 2015-9-24 09:27:09 | 显示全部楼层 |阅读模式
  在sharepoint 中运用匿名访问相信很多人都会,网上也有非常多的操作截屏,这个操作还是比较简单的,下面我们来分析一下他的功能,局限性,以及结合一个例子讲述一下如何运用。
  首先,匿名访问分为三个级别,分别为 无,列表和库,整个网站
  无  级别这里不做讨论,和没有开匿名一样。
  整个网站 级别也没有什么太多讨论的,就是整个网站的所有列表匿名用户为可读权限。
  列表和库级别:
  当你初次选定该级别的时候你会发现,他们有任何效果。官方的说明为“如果选择“列表和库”,则匿名用户仅能查看并更改对匿名用户启用权限的列表和库中的项目” 。我们之所以感觉不到启用他的区别那是因为我们没有对任何一个列表或者库来对匿名用户启用权限。   这里我们选择停止继承权限,就可以对整个列表实现自定义的权限了。
  例子:如果我现在有一个已经运行的网站,里面的大部分内容是不能给匿名用户查看的,怎么办?
  我想很多人第一感觉就是尝试列表和库级别的权限,这里我们以让用户能够看到首页为例,我们将网站页面这个库设置为可以匿名访问,直接在没有登录的前提下进入http://domain/SitePages/Home.aspx 是可以的。可是当我们输入http://domain/的时候却弹出来了验证对话框.这是个很悲剧的问题,这说明进入域名后,跳转到http://domain/SitePages/Home.aspx过程中,系统发现了哪个地方权限不足,于是就有了对话框,可是这个过程我们是不能修改的。所以很多管理员在这个时候基本上就已经没有法子了。然后尝试使用将匿名级别设置到整个网站,然后在一一将那些不能公之于众的库一个一个的停止继承权限,再在独立的权限系统上将其匿名级别设为无。这是个体力活。
  本人今天遇到了这个问题,苦恼的良久。 最后终于解决了,还是用列表与库级别的,还是上面的操作,只是运行一小点代码而已。这里我写了一个控制台程序来解决这个问题,代码如下:   


using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Microsoft.SharePoint;
namespace ConsoleApplication
{
    class Program
    {
        static void Main(string[] args)
        {
            string serverurl = string.Empty;
            while (true)
            {
                Console.WriteLine("Please type the server url here:");
                serverurl = Console.ReadLine();
                if (string.IsNullOrEmpty(serverurl))
                    continue;
                else
                {
                    try
                    {
                        SPSite mysite = new SPSite(serverurl);
                        SPWeb web = mysite.RootWeb;
                        web.AnonymousState = SPWeb.WebAnonymousState.Enabled;
                        web.AnonymousPermMask64 = SPBasePermissions.Open | SPBasePermissions.ViewPages;
                        web.Update();
                        Console.WriteLine("Succes!!");
                        break;
                    }
                    catch (Exception e)
                    {
                        Console.WriteLine(e.Message);
                    }
                }
            }
            Console.Read();
        }
    }
}  文章结尾有源代码下载。如果你再使用sharepoint 2010 的话你也可以直接运行bin文件夹下面的.exe程序来完成。按要求运行此程序后,在到整个网站的权限那看看,权限居然变成了  整个网站,不过你先别急着说我骗你,你在进下你的http://domain/ 是不是能够进去了?可能你立马回给我回一句,匿名界别到整个网站了,能进不去吗? 呵呵  你再看看那些没有停止继承的列表,难道匿名用户可以访问吗?不能吧。不要被 整个网站 这个级别给迷惑了。这只是表象,事实是我已经完成题设所给的需求。
  例二:就拿上面这问题,现在是整个页面库都可以访问,可是我还是有一些页面不能给匿名用户看,怎么办?
  首先我想到了停止继承,页面是有自己独立的权限体系的。可是打断继承后我发现,他没有匿名访问这个项目。
  让我们进一步了解一下其中缘由:
  1、匿名访问在单个列表项目和文件级别上不能配置。
  2、单个列表项目和文件从列表库或者文件库中继承匿名权限。
  3、当继承关系被断开后,访问单个项目或文件时需要认证访问。(换言之,就不能匿名访问了)
  
  那么微软官方是怎么看待这个问题的尼?
  下面看一段译文:
  “I can explain why anonymous access at folders with unique permission was not enabled in O12. Basically, the difficult is in managing the anonymous settings, not in browse time permission check.One goal of managing anonymous access is to make sure that if you block anonymous access at a higher level, all contents from that level below should also be protected. And if you enable anonymous access at a lower level, it should not automatically open up contents on higher level.
  “我能解释为什么O12(MOSS 2007)文件夹中的项目具有独有权限后无法匿名访问了。根本上,困难在于管理匿名访问的设置上,而不是访问权限检查。管理匿名访问的一个目标是在一个比较高的层次上阻挡匿名访问后,下面的内容应该会得到保护。如果你在较低层次上启用匿名访问,它不能自动在更高层次上开放内容。
  For example, at web level, the anonymous state has three values: disabled, enabled, open. If it’s disabled, then all lists within the web are off limit to anonymous users, no matter whether the list has unique permissions or not. If it’s enabled, then the web itself (and all lists inheriting permission from the web) is not accessible by anonymous user, but lists with unique permissions MAY be opened to anonymous user.
  举个例子,在网站层次,匿名状态有3个值,禁止,启用,开放。如果是“禁用”,则网站中的所有项目对匿名用户拒绝访问,无论列表是否有独有权限。如果“启用”,则网站自身(和所有继承了该网站权限的项目)不能被匿名访问,但是拥有独有权限的用户可以对匿名用户设置开放。
  Now, suppose that we want to allow user to manage anonymous permission at folder/item level. Then the parent scope (could be parent folder, parent list, or parent web) should at least “enable” anonymous access. This means we have to implement “enable” semantic at list/folder level. Also, when you disable anonymous access at web/list/folder level, we must also update security setting on all subfolder/items to remove anonymous access. This will scan the docs table.This is the reason that in O12, if you set a folder/item to have unique perm, it automatically sets anonymous permmask to 0.”
  这样的话,假设我们允许用户管理文件夹/项目级别的匿名权限。那么在上级范围内(父文件夹、父列表、父网站)至少要“启用”匿名访问的设置。这意味着我们不得不在列表/文件夹层支持“启用”状态;同时,当你禁用了某个网站/列表/文件夹层的匿名访问层次后,我们必须也更新所有子文件夹/子列表项目上的安全设置,去掉匿名访问设置。这会扫描文件表。这就是为什么在O12(MOSS2007)中将单个文件夹/项目设置拥有独有权限,它自动将匿名访问设置为0的原因。”
  源代码下载
  

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-118038-1-1.html 上篇帖子: SharePoint中CAML使用的一些总结 下篇帖子: SharePoint 2010中的客户端模型
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表