<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Zend Framework по-русски &#187; Авторизация и аутентификация</title>
	<atom:link href="http://zend-framework.ru/category/tutorials/auth/feed/" rel="self" type="application/rss+xml" />
	<link>http://zend-framework.ru</link>
	<description>Статьи, руководства и заметки о фреймворке для PHP - Zend Framework</description>
	<lastBuildDate>Mon, 30 Aug 2010 20:21:40 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>Google и Zend_OpenID</title>
		<link>http://zend-framework.ru/google-zend_openid/</link>
		<comments>http://zend-framework.ru/google-zend_openid/#comments</comments>
		<pubDate>Sat, 17 Oct 2009 19:32:24 +0000</pubDate>
		<dc:creator>Сергей Митрошин</dc:creator>
				<category><![CDATA[Авторизация и аутентификация]]></category>
		<category><![CDATA[Руководства]]></category>

		<guid isPermaLink="false">http://zend-framework.ru/?p=179</guid>
		<description><![CDATA[Ни для кого не секрет, что Zend_OpenID не всегда работает так, как хотелось бы. Сегодня я столкнулся с тем, что этот компонент не принимал ответ от openID-сервера google, выдавая ошибку &#8220;Discovery failed&#8221;. После изучения исходных кодов я выяснил, что необходимый для корректной валидации код просто отсутствует в компоненте. Пришлось воспользоваться грязным хаком (источник): В метод [...]]]></description>
			<content:encoded><![CDATA[<p>Ни для кого не секрет, что Zend_OpenID не всегда работает так, как хотелось бы.<br />
Сегодня я столкнулся с тем, что этот компонент не принимал ответ от openID-сервера google, выдавая ошибку &#8220;Discovery failed&#8221;. После изучения исходных кодов я выяснил, что необходимый для корректной валидации код просто отсутствует в компоненте. Пришлось воспользоваться грязным хаком (<a href="http://framework.zend.com/issues/browse/ZF-6905">источник</a>):</p>
<ol>
<li>
В метод Zend_OpenId_Consumer::_discovery(), в серию условий if preg_match (начало около строки 740), надо добавить следующий блок:</p>
<div class="codecolorer-container php " style="overflow:auto;white-space:nowrap;"><table cellspacing="0" cellpadding="0"><tbody><tr><td class="line-numbers"><div>1<br />2<br />3<br /></div></td><td><div class="php codecolorer" style="font-family:Monaco,Lucida Console,monospace"><span class="br0">&#125;</span> <span class="kw1">else</span> <span class="kw1">if</span> <span class="br0">&#40;</span><a href="http://www.php.net/preg_match"><span class="kw3">preg_match</span></a><span class="br0">&#40;</span><span class="st_h">'/&lt;URI&gt;([^&lt;]+)&lt;\/URI&gt;/i'</span><span class="sy0">,</span> <span class="re0">$response</span><span class="sy0">,</span> <span class="re0">$r</span><span class="br0">&#41;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span><br />
&nbsp; <span class="re0">$version</span> <span class="sy0">=</span> <span class="nu19">2.0</span><span class="sy0">;</span><br />
&nbsp; <span class="re0">$server</span> <span class="sy0">=</span> <span class="re0">$r</span><span class="br0">&#91;</span><span class="nu0">1</span><span class="br0">&#93;</span><span class="sy0">;</span></div></td></tr></tbody></table></div>
</li>
<li>
Класс тот же, метод _checkId(). В блок if ($version <= 2.0), в if ($this->_session !== null) надо добавить:</p>
<div class="codecolorer-container php " style="overflow:auto;white-space:nowrap;"><table cellspacing="0" cellpadding="0"><tbody><tr><td class="line-numbers"><div>1<br />2<br />3<br />4<br /></div></td><td><div class="php codecolorer" style="font-family:Monaco,Lucida Console,monospace"><span class="kw1">if</span> <span class="br0">&#40;</span><span class="re0">$server</span> <span class="sy0">==</span> <span class="st_h">'https://www.google.com/accounts/o8/ud'</span><span class="br0">&#41;</span> <span class="br0">&#123;</span><br />
&nbsp; <span class="re0">$this</span><span class="sy0">-&gt;</span>_session<span class="sy0">-&gt;</span><span class="me1">identity</span> <span class="sy0">=</span> <span class="st_h">'http://specs.openid.net/auth/2.0/identifier_select'</span><span class="sy0">;</span><br />
&nbsp; <span class="re0">$this</span><span class="sy0">-&gt;</span>_session<span class="sy0">-&gt;</span><span class="me1">claimed_id</span> <span class="sy0">=</span> <span class="st_h">'http://specs.openid.net/auth/2.0/identifier_select'</span><span class="sy0">;</span><br />
<span class="br0">&#125;</span></div></td></tr></tbody></table></div>
</li>
<li>
Там же, следующая ветка &#8211; else if (defined(&#8216;SID&#8217;)):</p>
<div class="codecolorer-container php " style="overflow:auto;white-space:nowrap;"><table cellspacing="0" cellpadding="0"><tbody><tr><td class="line-numbers"><div>1<br />2<br />3<br />4<br /></div></td><td><div class="php codecolorer" style="font-family:Monaco,Lucida Console,monospace"><span class="kw1">if</span> <span class="br0">&#40;</span><span class="re0">$server</span> <span class="sy0">==</span> <span class="st_h">'https://www.google.com/accounts/o8/ud'</span><span class="br0">&#41;</span> <span class="br0">&#123;</span><br />
&nbsp; <span class="re0">$_SESSION</span><span class="br0">&#91;</span><span class="st_h">'zend_openid'</span><span class="br0">&#93;</span><span class="br0">&#91;</span><span class="st_h">'identity'</span><span class="br0">&#93;</span> <span class="sy0">=</span> <span class="st_h">'http://specs.openid.net/auth/2.0/identifier_select'</span><span class="sy0">;</span><br />
&nbsp; <span class="re0">$_SESSION</span><span class="br0">&#91;</span><span class="st_h">'zend_openid'</span><span class="br0">&#93;</span><span class="br0">&#91;</span><span class="st_h">'claimed_id'</span><span class="br0">&#93;</span> <span class="sy0">=</span> <span class="st_h">'http://specs.openid.net/auth/2.0/identifier_select'</span><span class="sy0">;</span><br />
<span class="br0">&#125;</span></div></td></tr></tbody></table></div>
</li>
<li>
Там же, вне if/else if/else ветки, но внутри $version <= 2.0:</p>
<div class="codecolorer-container php " style="overflow:auto;white-space:nowrap;"><table cellspacing="0" cellpadding="0"><tbody><tr><td class="line-numbers"><div>1<br />2<br />3<br />4<br /></div></td><td><div class="php codecolorer" style="font-family:Monaco,Lucida Console,monospace"><span class="kw1">if</span> <span class="br0">&#40;</span><span class="re0">$server</span> <span class="sy0">==</span> <span class="st_h">'https://www.google.com/accounts/o8/ud'</span><span class="br0">&#41;</span> <span class="br0">&#123;</span><br />
&nbsp; <span class="re0">$params</span><span class="br0">&#91;</span><span class="st_h">'openid.identity'</span><span class="br0">&#93;</span> <span class="sy0">=</span> <span class="st_h">'http://specs.openid.net/auth/2.0/identifier_select'</span><span class="sy0">;</span><br />
&nbsp; <span class="re0">$params</span><span class="br0">&#91;</span><span class="st_h">'openid.claimed_id'</span><span class="br0">&#93;</span> <span class="sy0">=</span> <span class="st_h">'http://specs.openid.net/auth/2.0/identifier_select'</span><span class="sy0">;</span><br />
<span class="br0">&#125;</span></div></td></tr></tbody></table></div>
</li>
</ol>
<p>Конечно, это некрасивое решение, но оно приемлемо до тех пор, пока этот баг не будет закрыт.</p>
<hr />
<p><small>
<a href="http://zend-framework.ru/google-zend_openid/#comments">3 comments</a>
<br/>
Post tags: <br/>
</small></p>]]></content:encoded>
			<wfw:commentRss>http://zend-framework.ru/google-zend_openid/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Управление правами доступа при помощи Zend_Acl</title>
		<link>http://zend-framework.ru/upravlenie-pravami-dostupa-pri-pomoshhi-zend_acl/</link>
		<comments>http://zend-framework.ru/upravlenie-pravami-dostupa-pri-pomoshhi-zend_acl/#comments</comments>
		<pubDate>Sat, 02 Feb 2008 14:13:19 +0000</pubDate>
		<dc:creator>Сергей Митрошин</dc:creator>
				<category><![CDATA[Авторизация и аутентификация]]></category>
		<category><![CDATA[Руководства]]></category>
		<category><![CDATA[Zend_Acl]]></category>

		<guid isPermaLink="false">http://zend-framework.ru/2008/02/upravlenie-pravami-dostupa-pri-pomoshhi-zend_acl/</guid>
		<description><![CDATA[Здравствуйте. Сейчас я расскажу вам про один из инструментов для разграничения прав пользователей/групп на вашем сайте – Zend_Acl. Этот класс входит в PHP-фреймворк Zend Framework. Несмотря на то, что Zend Framework – цельная система, и её компоненты связаны между собой, класс Zend_Acl может без особых проблем использоваться отдельно. (...)Продолжить чтение - Управление правами доступа при [...]]]></description>
			<content:encoded><![CDATA[<p>Здравствуйте.<br />
Сейчас я расскажу вам про один из инструментов для разграничения прав пользователей/групп на вашем сайте – Zend_Acl.<br />
Этот класс входит в PHP-фреймворк Zend Framework. Несмотря на то, что Zend Framework – цельная система, и её компоненты связаны между собой, класс Zend_Acl может без особых проблем использоваться отдельно.<br />
(...)<br/>Продолжить чтение - <a href="http://zend-framework.ru/upravlenie-pravami-dostupa-pri-pomoshhi-zend_acl/">Управление правами доступа при помощи Zend_Acl</a> (370 words)</p>
<hr />
<p><small>
<a href="http://zend-framework.ru/upravlenie-pravami-dostupa-pri-pomoshhi-zend_acl/#comments">18 comments</a>
<br/>
Post tags: <a href="http://zend-framework.ru/tag/zend_acl/" rel="tag">Zend_Acl</a><br/>
</small></p>]]></content:encoded>
			<wfw:commentRss>http://zend-framework.ru/upravlenie-pravami-dostupa-pri-pomoshhi-zend_acl/feed/</wfw:commentRss>
		<slash:comments>18</slash:comments>
		</item>
	</channel>
</rss>
