<?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>mcorp. &#187; ws-security</title>
	<atom:link href="http://www.mcorp.com.br/tag/ws-security/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.mcorp.com.br</link>
	<description>tecnologia e informações inúteis de utilidade pública</description>
	<lastBuildDate>Mon, 14 Nov 2011 15:10:22 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>Segurança de informações através de filtragem de dados no WSO2 Data Services</title>
		<link>http://www.mcorp.com.br/2011/02/seguranca-de-informacoes-atraves-de-filtragem-de-dados-no-wso2-data-services/</link>
		<comments>http://www.mcorp.com.br/2011/02/seguranca-de-informacoes-atraves-de-filtragem-de-dados-no-wso2-data-services/#comments</comments>
		<pubDate>Thu, 24 Feb 2011 22:30:30 +0000</pubDate>
		<dc:creator>José Nogueira</dc:creator>
				<category><![CDATA[desenvolvimento]]></category>
		<category><![CDATA[data services]]></category>
		<category><![CDATA[dss]]></category>
		<category><![CDATA[identity]]></category>
		<category><![CDATA[segurança]]></category>
		<category><![CDATA[ws-security]]></category>
		<category><![CDATA[wso2]]></category>
		<category><![CDATA[wss]]></category>
		<category><![CDATA[xml encryption]]></category>
		<category><![CDATA[xml signature]]></category>

		<guid isPermaLink="false">http://www.mcorp.com.br/?p=499</guid>
		<description><![CDATA[Em alguns casos, podemos nos deparar com a necessidade de confidencializar alguns dados no retorno de Data Services, exibindo-os apenas para determinados grupos de usuários, tanto por questão de segurança (quando algum grupo específico não pode ter acesso a algumas informações),  &#8230; <a href="http://www.mcorp.com.br/2011/02/seguranca-de-informacoes-atraves-de-filtragem-de-dados-no-wso2-data-services/">Continue lendo <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p style="text-align: center;"><a href="http://www.mcorp.com.br/wp-content/uploads/2011/02/cadeado.jpg" rel="lightbox[499]"><img class="alignnone size-medium wp-image-543" title="Cadeados (por: MissTessmacher @ Flickr)" src="http://www.mcorp.com.br/wp-content/uploads/2011/02/cadeado-300x199.jpg" alt="" width="300" height="199" /></a></p>
<p>Em alguns casos, podemos nos deparar com a necessidade de confidencializar alguns dados no retorno de <a href="http://www.mcorp.com.br/glossario/#DataServices" target="_blank">Data Services</a>, exibindo-os apenas para determinados grupos de usuários, tanto por questão de segurança (quando algum grupo específico não pode ter acesso a algumas informações),  quanto por não ter a necessidade de utilizar esse retorno, para que assim não precisemos criar dois serviços com a mesma finalidade. O WSO2 Data Services Server oferece a possibilidade de filtrar esses dados no retorno de uma <em>query</em>, através do <a href="http://www.mcorp.com.br/glossario/#WS-Security" target="_blank">WS-Security</a> (tem como foco principal o uso de <a href="http://www.mcorp.com.br/glossario/#XML-Signature" target="_blank">XML Signature</a> e <a href="http://www.mcorp.com.br/glossario/#XML-Encryption" target="_blank">XML Encryption</a>).<br />
Nesse caso irei exemplificar a seguinte situação: um serviço que retorna dados referente aos funcionários, sendo consumido por dois departamentos: o RH (que necessita dos dados referente aos pagamentos dos honorários) e o setor de segurança (que utiliza apenas os dados cadastrais para acesso dos funcionários as dependências da empresa).</p>
<p>Iremos utilizar nesse exemplo o WSO2 Data Services Server em sua versão 2.5.1 (nesse caso considerando um conhecimento básico da suíte <a href="http://www.mcorp.com.br/glossario/#WSO2" target="_blank">WSO2</a>, caso contrário consulte os <a href="http://www.mcorp.com.br/tag/wso2"><em>posts</em> relacionados ao WSO2</a>):</p>
<ul>
<li><a href="http://www.leandroprado.com.br/2010/07/criando-um-ambiente-soa-com-wso2/" target="_blank">Criando um ambiente SOA com WSO2</a></li>
<li><a href="http://www.leandroprado.com.br/2010/09/criando-servicos-com-o-wso2-parte-1-wso2-data-services/" target="_blank">Criando serviços com WSO2 Data Services</a></li>
</ul>
<p>Supondo que possuímos o banco de dados, com uma tabela simples chamada de TB_FUNCIONARIOS, com os campos: ID, NOME E SALARIO.</p>
<h2>Etapa 1 &#8211; Criando o usuário</h2>
<p>Logado ao WSO2 Data Services Server vá em &#8220;Home &gt; Configure &gt; User Management &gt; Users&#8221;, para que possamos criar novos usuários, nesse caso criaremos os usuários &#8220;Maria&#8221; que faz parte do departamento de RH da empresa e &#8220;Joao&#8221; que faz parte da segurança do prédio. Click em &#8220;Add User&#8221; para preenchermos os dados do usuário que será cadastrado.</p>
<div id="attachment_508" class="wp-caption aligncenter" style="width: 310px"><a href="http://www.mcorp.com.br/wp-content/uploads/2011/02/figura1.0-add-user-wso2.jpg" rel="lightbox[499]"><img class="size-medium wp-image-508" src="http://www.mcorp.com.br/wp-content/uploads/2011/02/figura1.0-add-user-wso2-300x205.jpg" alt="add user wso2" width="300" height="205" /></a><p class="wp-caption-text">add user wso2</p></div>
<p>Após inserir os dados do usuário, clicar em &#8220;finish&#8221;, repetir o procedimento pro cadastro do outro usuário. Podemos listar os usuários criados como mostra a imagem.</p>
<div id="attachment_509" class="wp-caption aligncenter" style="width: 310px"><a href="http://www.mcorp.com.br/wp-content/uploads/2011/02/figura1.1-list-user-wso2.jpg" rel="lightbox[499]"><img class="size-medium wp-image-509" src="http://www.mcorp.com.br/wp-content/uploads/2011/02/figura1.1-list-user-wso2-300x149.jpg" alt="list user wso2" width="300" height="149" /></a><p class="wp-caption-text">list user wso2</p></div>
<h2>Etapa 2 &#8211; Criando grupos de usuários</h2>
<p>Com nossos usuários criados, vamos gerar um grupo para vincular ao perfil do usuário. Vá em &#8220;Home &gt; Configure &gt; Users and Roles &gt; Roles&#8221;, serão listados os grupos existentes no WSO2, clique em &#8220;Add New Role&#8221; que abrirá a tela para cadastrarmos os grupos.</p>
<p>Crie um grupo com o nome &#8220;RecursosHumanos&#8221;, em seguida clique em &#8220;next&#8221;, aparecerá a tela com os flags de permissões e previlégios para os membros do grupo. Nesse caso vamos selecionar a opção &#8220;All permissions&#8221;, para que sejam marcadas todas as opções. Enquanto estamos criando o grupo, já podemos vincular os usuários que farão parte do mesmo, faça uma busca listando todos os usuários e selecione o usuário &#8220;Maria&#8221; criado anteriormente, como na imagem abaixo e finalize.</p>
<div id="attachment_512" class="wp-caption aligncenter" style="width: 310px"><a href="http://www.mcorp.com.br/wp-content/uploads/2011/02/figura1.2-select-user-wso2.jpg" rel="lightbox[499]"><img class="size-medium wp-image-512" src="http://www.mcorp.com.br/wp-content/uploads/2011/02/figura1.2-select-user-wso2-300x170.jpg" alt="select user wso2" width="300" height="170" /></a><p class="wp-caption-text">select user wso2</p></div>
<p>Agora usando o mesmo processo vamos criar o grupo &#8220;Seguranca&#8221;. Observe que quando selecionamos algum usuário criado e vinculado ao grupo, o mesmo possui um ou vários grupos selecionados.</p>
<div id="attachment_513" class="wp-caption aligncenter" style="width: 310px"><a href="http://www.mcorp.com.br/wp-content/uploads/2011/02/figura1.3-roles-of-users-wso2.jpg" rel="lightbox[499]"><img class="size-medium wp-image-513" src="http://www.mcorp.com.br/wp-content/uploads/2011/02/figura1.3-roles-of-users-wso2-300x176.jpg" alt="roles of users wso2" width="300" height="176" /></a><p class="wp-caption-text">roles of users wso2</p></div>
<h2>Etapa 3 &#8211;  Filtrando dados da consulta</h2>
<p>Com os usuários e grupos devidamente criados vamos finalmente ao que interessa, filtrar os dados de acordo com o perfil de cada grupo. Considerando que já exista um serviço &#8220;empresa&#8221;, vamos criar o método &#8220;pesquisarFuncionario&#8221; para demonstrar como filtrar os dados de retorno do método. Nesse caso, o método nos retornará os campos &#8220;ID&#8221; e &#8220;NOME&#8221; para o grupo Segurança, e &#8220;ID&#8221;, &#8220;NOME&#8221; e &#8220;SALARIO&#8221; para o grupo RecursosHumanos.</p>
<p>Iremos em &#8220;Home &gt; Manage &gt; Services &gt; List &gt; Service Dashboard &gt; Service Details &gt; Data Sources &gt; Queries&#8221;,  para inserirmos nosso novo método. Preenchemos com o SQL, o campo de entrada, e na hora em que formos preencher o retorno será onde a &#8220;mágica&#8221; acontecerá.</p>
<div id="attachment_515" class="wp-caption aligncenter" style="width: 310px"><a href="http://www.mcorp.com.br/wp-content/uploads/2011/02/figura1.4-edit-query-wso2.jpg" rel="lightbox[499]"><img class="size-medium wp-image-515" src="http://www.mcorp.com.br/wp-content/uploads/2011/02/figura1.4-edit-query-wso2-300x176.jpg" alt="edit query wso2" width="300" height="176" /></a><p class="wp-caption-text">edit query wso2</p></div>
<p>No item &#8220;Add new output Mapping&#8221; abriremos a tela para cadastrar um novo campo de retorno, preenchemos o tipo do campo, o nome de saída e o nome do campo no SQL. Abaixo dessas opções temos o item &#8220;Allowed User Roles&#8221;, aonde aparecerão os grupos que criamos anteriormente, para os campos &#8220;ID E NOME&#8221; selecionaremos ambos os grupos, no caso do campo &#8220;SALARIO&#8221; selecionaremos apenas o grupo RecursosHumanos, com o método criado mostraremos como consumir esse método filtrando os dados.</p>
<div id="attachment_516" class="wp-caption aligncenter" style="width: 310px"><a href="http://www.mcorp.com.br/wp-content/uploads/2011/02/figura1.5-add-edit-output-mapping-wso2.jpg" rel="lightbox[499]"><img class="size-medium wp-image-516" src="http://www.mcorp.com.br/wp-content/uploads/2011/02/figura1.5-add-edit-output-mapping-wso2-300x160.jpg" alt="add edit output mapping wso2" width="300" height="160" /></a><p class="wp-caption-text">add edit output mapping wso2</p></div>
<h2>Etapa 4 &#8211; Testando a filtragem de dados</h2>
<p>Agora vamos abrir a opção &#8221; Home &gt; Manage &gt; Services &gt; List &gt; Service Dashboard &gt; Security for the service &gt; Activate Security &gt; Service Dashboard &gt; Security for the service&#8221;, selecionamos a opção &#8220;yes&#8221; no combo e setamos o flag &#8220;UsernameToken&#8221;, assim estaremos habilitando segurança por grupo e usuário do cliente.</p>
<div id="attachment_517" class="wp-caption aligncenter" style="width: 310px"><a href="http://www.mcorp.com.br/wp-content/uploads/2011/02/figura1.6-security-for-the-service-wso2.jpg" rel="lightbox[499]"><img class="size-medium wp-image-517" src="http://www.mcorp.com.br/wp-content/uploads/2011/02/figura1.6-security-for-the-service-wso2-300x130.jpg" alt="security for the service wso2" width="300" height="130" /></a><p class="wp-caption-text">security for the service wso2</p></div>
<p>Simulando a execução do serviço, no próprio WSO2 Data Services Server, podemos perceber que aparecem as opções &#8220;username&#8221; e &#8220;password&#8221;. O retorno será filtrado de acordo com o usuário que for preenchido nesses campos. Executando a consulta, notaremos que o campo &#8220;SALARIO&#8221; só aparece no retorno se utilizarmos o usuário &#8220;Maria&#8221;.</p>
<div id="attachment_519" class="wp-caption aligncenter" style="width: 310px"><a href="http://www.mcorp.com.br/wp-content/uploads/2011/02/figura1.9-full-return-service-wso2.jpg" rel="lightbox[499]"><img class="size-medium wp-image-519" src="http://www.mcorp.com.br/wp-content/uploads/2011/02/figura1.9-full-return-service-wso2-300x126.jpg" alt="full return service wso2" width="300" height="126" /></a><p class="wp-caption-text">full return service wso2</p></div>
<div id="attachment_520" class="wp-caption aligncenter" style="width: 310px"><a href="http://www.mcorp.com.br/wp-content/uploads/2011/02/figura1.8-parcial-return-service-wso2.jpg" rel="lightbox[499]"><img class="size-medium wp-image-520" src="http://www.mcorp.com.br/wp-content/uploads/2011/02/figura1.8-parcial-return-service-wso2-300x128.jpg" alt="parcial return service wso2" width="300" height="128" /></a><p class="wp-caption-text">partial return service wso2</p></div>
<p>Espero ter colaborado, sugestões e criticas são sempre bem vindas, focando o objetivo de transformar a comunidade <a href="http://www.wso2brasil.com.br/" target="_blank">WSO2 Brasil</a> cada vez mais forte, até o próximo post.</p>
<p>Post baseado no artigo &#8220;<a href="http://wso2.org/library/articles/content-filtering-data-services-user-roles" target="_blank">content filtering data services user roles</a>&#8221; de Anjana Fernando &#8211; Software Engineer WSO2.</p>
<p>Pode ser visto um exemplo de <a href="http://www.mcorp.com.br/2010/03/consumindo-um-servico-seguro-utilizando-php/" target="_blank">consumo um servico seguro utilizando php</a>.</p>
<h3  class="related_post_title">Posts relacionados</h3><ul class="related_post"><li><a href="http://www.mcorp.com.br/2010/04/wso2-business-activity-monitoring-sql-server/" title="WSO2 Business Activity Monitoring + SQL Server">WSO2 Business Activity Monitoring + SQL Server</a></li><li><a href="http://www.mcorp.com.br/2010/03/consumindo-um-servico-seguro-utilizando-php/" title="Consumindo um serviço seguro utilizando PHP">Consumindo um serviço seguro utilizando PHP</a></li><li><a href="http://www.mcorp.com.br/2009/11/novidades-nos-lancamentos-nov2009-da-plataforma-wso2/" title="Novidades nos lançamentos (nov/2009) da plataforma WSO2">Novidades nos lançamentos (nov/2009) da plataforma WSO2</a></li><li><a href="http://www.mcorp.com.br/2011/10/wso2-data-services-server-e-suas-atualizacoes/" title="WSO2 Data Services Server e suas atualizações">WSO2 Data Services Server e suas atualizações</a></li><li><a href="http://www.mcorp.com.br/2011/06/novidades-wso2-data-services-server-2-6-x/" title="Novidades WSO2 Data Services Server (2.6.x)">Novidades WSO2 Data Services Server (2.6.x)</a></li></ul>]]></content:encoded>
			<wfw:commentRss>http://www.mcorp.com.br/2011/02/seguranca-de-informacoes-atraves-de-filtragem-de-dados-no-wso2-data-services/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Consumindo um serviço seguro utilizando PHP</title>
		<link>http://www.mcorp.com.br/2010/03/consumindo-um-servico-seguro-utilizando-php/</link>
		<comments>http://www.mcorp.com.br/2010/03/consumindo-um-servico-seguro-utilizando-php/#comments</comments>
		<pubDate>Mon, 08 Mar 2010 23:03:58 +0000</pubDate>
		<dc:creator>Leonardo Saraiva</dc:creator>
				<category><![CDATA[desenvolvimento]]></category>
		<category><![CDATA[data services]]></category>
		<category><![CDATA[dss]]></category>
		<category><![CDATA[esb]]></category>
		<category><![CDATA[framework]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[ws-security]]></category>
		<category><![CDATA[wso2]]></category>

		<guid isPermaLink="false">http://www.mcorp.com.br/?p=256</guid>
		<description><![CDATA[Dia desses precisei colocar autenticação em um serviço que desenvolvi e passeando pelas opções da interface administrativa da WSO2 Enterprise Service Bus encontrei facilmente minha solução. Um pouco depois, li no twitter do @WSO2 um comentário sobre um novo artigo &#8230; <a href="http://www.mcorp.com.br/2010/03/consumindo-um-servico-seguro-utilizando-php/">Continue lendo <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Dia desses precisei colocar autenticação em um serviço que desenvolvi e passeando pelas opções da interface administrativa da <a href="http://wso2.org/downloads/esb" target="_blank">WSO2 Enterprise Service Bus</a> encontrei facilmente minha solução. Um pouco depois, li no twitter do @<a href="http://twitter.com/wso2" target="_blank">WSO2</a> um comentário sobre um novo artigo publicado sobre segurança nos <a href="/glossario/#DataServices">Data Services</a>, onde ensinava a fazer toda a parte de configuração: <a href="http://wso2.org/library/articles/content-filtering-data-services-user-roles" target="_blank">Content Filtering in Data Services with User Roles</a>.</p>
<p>Só que pouco tempo depois de configurar e entregar ao cliente o serviço, veio o problema: como consumir em <a href="http://www.php.net/" target="_blank">PHP</a> o serviço? No artigo a solução entregue por eles para consumo é em <a href="http://java.sun.com/" target="_blank">Java</a>, como a capacidade do cliente deixa a desejar, fiquei de fazer e enviar um exemplo de consumo do serviço desenvolvido.</p>
<p>Então&#8230; mãos na massa!</p>
<h2>Configurando a ESB</h2>
<p>Nesse ponto não irei escrever passo-a-passo a configuração que deve ser feita, o trabalho realizado pelo pessoal do WSO2 está muito bem feito nessa parte do artigo: <a href="http://wso2.org/library/articles/content-filtering-data-services-user-roles#step_4" target="_blank">Step 4 – Enable User Authentication for the Data Service</a>.</p>
<h2>Consumo sem segurança</h2>
<p>Um pequeno trecho de PHP que mostra como consumir o serviço sem nenhum tipo de segurança. Código pequeno, limpo e objetivo.</p>
<pre class="brush: php">
$client = new SoapClient(&quot;http://localhost:8280/services/Tutorial?wsdl&quot;);
try {
$obj = $client-&gt;searchProductsByGroupId(array(&quot;group_id&quot; =&gt; 1));
print_r($obj);

} catch (Exception $e) {
echo &quot;ERRO: &quot; . $e-&gt;getMessage();
}</pre>
<p>Mas mesmo com toda essa objetividade, o problema do cliente não estava resolvido e eu recebia o seguinte erro:</p>
<pre class="brush: php">ERRO: SOAP header missing</pre>
<p>E, para resolver, faltava adicionar o cabeçalho com os dados de segurança.</p>
<h2>Consumo com segurança</h2>
<p>Agora um não-tão-pequeno trecho em PHP.</p>
<pre class="brush: php">// configurações de conexão
$username = &quot;admin&quot;;
$password = &quot;admin&quot;;
$created = date (&quot;Y-m-d\TH:i:s&quot;, mktime (date(&quot;H&quot;), date(&quot;i&quot;), date(&quot;s&quot;), date(&quot;m&quot;), date(&quot;d&quot;), date(&quot;Y&quot;))).&quot;Z&quot;;

// definição de namespaces
$ns = &#039;http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd&#039;;
$wsu = &#039;http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd&#039;;

// criando elemento UsernameToken
$token = new stdClass;
$token-&gt;Username = new SOAPVar($username, XSD_STRING, null, null, null, $ns);
$token-&gt;Password = new SOAPVar($password, XSD_STRING, null, null, null, $ns);

// criando elemento Timestamp
$timestamp = new stdClass;
$timestamp-&gt;Created = new SOAPVar($created, XSD_STRING, null, null, null, $wsu);

// criando elemento Security
$wsec = new stdClass;
$wsec-&gt;UsernameToken = new SoapVar($token,     SOAP_ENC_OBJECT, null, null, null, $ns);
$wsec-&gt;Timestamp     = new SoapVar($timestamp, SOAP_ENC_OBJECT, null, null, null, $wsu);

// criando header
$headers = new SOAPHeader($ns, &#039;Security&#039;, $wsec);

// construtor do web-service (com cabeçalho) passando o endereço do WSDL
$client = new SoapClient(&quot;http://localhost:8280/services/Tutorial?wsdl&quot;);
$client-&gt;__setSOAPHeaders($headers);

// chamada do método
try {
$obj = $client-&gt;searchProductsByGroupId(array(&quot;group_id&quot; =&gt; 1));
print_r($obj);

} catch (Exception $e) {
echo &quot;ERRO: &quot; . $e-&gt;getMessage();
}</pre>
<p>E tudo rodou normalmente, sem problemas, o cliente ficou feliz e eu matei um pouco da saudade de programar em PHP.</p>
<p>Na pesquisa por soluções, tentei utilizar o <a href="http://wso2.org/projects/wsf/php" target="_blank">WSO2 Web Services Framework <em>for PHP</em></a> mas descobri que depende de instalação de módulo no <a href="http://httpd.apache.org" target="_blank">Apache</a> e não servia para meu cliente, mas anotei na pauta para testá-lo em outro momento.</p>
<h3  class="related_post_title">Posts relacionados</h3><ul class="related_post"><li><a href="http://www.mcorp.com.br/2011/06/novidades-wso2-data-services-server-2-6-x/" title="Novidades WSO2 Data Services Server (2.6.x)">Novidades WSO2 Data Services Server (2.6.x)</a></li><li><a href="http://www.mcorp.com.br/2011/02/seguranca-de-informacoes-atraves-de-filtragem-de-dados-no-wso2-data-services/" title=" Segurança de informações através de filtragem de dados no WSO2 Data Services"> Segurança de informações através de filtragem de dados no WSO2 Data Services</a></li><li><a href="http://www.mcorp.com.br/2010/06/compilando-o-wso2-carbon-3-0-0-e-corrigindo-o-wso2-data-services-server-2-5-0/" title="Compilando o WSO2 Carbon 3.0.0 e corrigindo o WSO2 Data  Services Server 2.5.0">Compilando o WSO2 Carbon 3.0.0 e corrigindo o WSO2 Data  Services Server 2.5.0</a></li><li><a href="http://www.mcorp.com.br/2009/11/novidades-nos-lancamentos-nov2009-da-plataforma-wso2/" title="Novidades nos lançamentos (nov/2009) da plataforma WSO2">Novidades nos lançamentos (nov/2009) da plataforma WSO2</a></li><li><a href="http://www.mcorp.com.br/2009/11/wso2-e-a-quinta-feira-agitada-muitos-lancamentos/" title="WSO2 e a quinta-feira agitada: muitos lançamentos">WSO2 e a quinta-feira agitada: muitos lançamentos</a></li></ul>]]></content:encoded>
			<wfw:commentRss>http://www.mcorp.com.br/2010/03/consumindo-um-servico-seguro-utilizando-php/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>

