Arquivo da categoria: Azure

Single Sign On utilizando Apache e Azure AD

Olá SharePointers,

Recentemente eu compartilhei no Github (https://github.com/RARomano/SSO-Apache-Azure) um repositório que mostra como fazer single sign on utilizando Azure AD, Apache e Open ID.

Utilizarei esse artigo para explicar um pouco mais sobre o conceito utilizado.

Open ID Connect

É um protocolo criado com base no OAuth para permitir que usuários se conectem, com segurança, à aplicações web.

Veja mais detalhes do fluxo de autenticação, na imagem abaixo:

Single Sign On

SSO é um conceito bastante comum em aplicações, consiste em utilizar somente um login para se autenticar em diversas aplicações diferentes. No nosso cenário, utilizaremos o login do Azure AD para se autenticar em aplicações customizadas.

Entretanto, como é um conceito comum e cada vez mais desejado, é normal encontrarmos em cada aplicação os códigos/parâmetros que permitem esse tipo de integração.

Alguns links falando sobre SSO, com Azure AD:

Em um cenário corporativo, onde hospedamos várias aplicações distintas, é muito mais interessante termos essas configurações em um só lugar, centralizado e tirar essa responsabilidade das aplicações.

Apache

Apache é um servidor web, livre e disponível para vários sistemas operacionais, inclusive o windows. Segundo estatísticas, ele possui um domínio de cerca 60% do mercado. (https://news.netcraft.com/archives/2016/02/22/february-2016-web-server-survey.html)

Pensando nisso, resolvi utilizar o Apache nesse artigo.

Para realizar a autenticação, utilizei esse módulo do apache mod_auth_openidc (https://github.com/pingidentity/mod_auth_openidc).

Docker

Outra coisa que utilizei no meu exemplo foi o Docker, visando portabilidade e escalabilidade dos meus testes, por exemplo: instanciar 2 servidores apache distintos e testar se ao autenticar em uma aplicação de um servidor a outra também estaria autenticada.

Resultados Obtidos

  • Autenticação em aplicações distintas no mesmo servidor
  • Autenticação em aplicações em servidores diferentes
  • Ao autenticar em uma aplicação customizada, você não precisará se autenticar novamente para utilizar outros serviços da Microsoft, como o e-mail por exemplo
  • Ao se autenticar em outro serviço da Microsoft primeiro e depois acessar uma aplicação, você não precisará se autenticar novamente.

Eu, particularmente, tenho gostado bastante de testar esses cenários de interoperabilidade. Tenho buscado, cada vez mais, utilizar essas ferramentas para desenvolver os projetos em que atuo e tenho me surpreendido bastante com o resultado.

SharePoint WebHooks

Olá SharePointers,

Como eu postei recentemente aqui, a Microsoft tem apresentado uma série de novidades interessantes em toda a sua gama de produtos e não tem deixado faltar o nosso amado SharePoint.

Uma das features que devem ser anunciadas em breve para o SharePoint é o “SharePoint Webhooks“.

 

O que são os Webhooks?

Webhook é um conceito atual que está ganhando cada vez mais popularidade. Com ele é possível receber notificações em tempo real, sem ter que ir consultar no sistema fonte. É conhecido como Web Callback or HTTP Push API.

Muitos lugares já utilizam/disponibilizam esse tipo de APIs, como:

Github – envia notificações quando alguma ação acontece em um repositório. 

Foursquare – envia notificações quando um usuário faz um checkin em algum lugar.

 

SharePoint Webhooks

No SharePoint, a previsão é que este recurso esteja disponível, em modo General Preview, nesse trimestre e de forma final no final do ano.

 

Alguns podem perguntar: e os Remote Event Receivers? Quando escolher um ou outro?

Os Webhooks não suportarão os eventos do tipo “ING”, ou seja, você não será notificado enquanto uma ação está acontecendo, e consequentemente, não poderá interferir nelas. As notificações serão somente depois que a ação ocorrer.

Eles são mais seguros, nenhuma informação sobre o evento é passada durante a chamada.

Os Webhooks são mais “industry standard”, ou seja, os desenvolvedores de outras tecnologias já estão acostumados com esse padrão e será mais fácil a adoção.

Não será necessário utilizar serviços baseados em WCF, Serviços HTTP comuns já são suficientes.

 

Para mais informações, veja o video abaixo:

 

Referências:

https://dev.office.com/blogs/introducing-sharepoint-webhooks

https://blogs.technet.microsoft.com/stefan_gossner/2016/05/04/sharepoint-developer-announcement-the-sharepoint-framework-an-open-and-connected-platform/

https://github.com/SharePoint/sp-dev-samples

 

 

Quick Notes: SharePoint 2016 for IT Professionals – Management Improvements

Olá SharePointers,

Em Maio/2015 aconteceu o evento Microsoft Ignite em Chicago, EUA. Esse evento, o sucessor da extinta SharePoint Conference, foi utilizado pela Microsoft para anunciar as novidades e tendências que estão seguindo em seus produtos.

Foi uma semana muito interessante, com muita novidade! Durante essa semana, era muito comum “vazar” algumas informações antes do dia do evento (até fiz um post sobre algumas dessas informações: http://rodrigoromano.net/2015/05/03/sharepoint-2016/) através de pessoas que estavam assistindo as sessões durante o evento.

Para quem perdeu o evento, os vídeos das sessões foram disponibilizados no Channel 9: http://channel9.msdn.com/Events/Ignite/2015.

Em uma das sessões, Bill Baer (gerente de produto) abordou algumas novidades sobre o SharePoint 2016 para IT Professionals (http://channel9.msdn.com/events/Ignite/2015/BRK2188).

 

Nesse artigo, vou abordar as novidades relacionadas a gerenciamento do ambiente.

 

Nova visão

Com a experiência de rodar o SharePoint Online (na nuvem), a Microsoft adotou uma estratégia bem interessante: pegou uma versão estável do SharePoint Online e transformou-o em “On-premises”, visando resolver algumas coisas que sempre foram complicadas para administradores de ambientes SharePoint: Updates e Patches.

Requisitos de Hardware

Para rodar o SharePoint 2016, os requisitos são:

Arquitetura Memória Processador Disco
Single Server 16-24 GB x64 (1 processador x 4 cores) 80 GB
Farm 12-16 GB x64 (1 processoror x 4 cores) 80 GB

Pouca diferença do que temos hoje de requisitos para o SharePoint 2013, veja aqui: https://technet.microsoft.com/en-us/library/cc262485.aspx

 

Requisitos de Software

Em relação ao Software, serão suportados o Windows Server 2012 R2 e Windows Server 10.

Para banco de dados, temos SQL Server 2014 SP1 e o SQL Server vNEXT.

 

Mudanças no Processo de Instalação

  • Instalações do SharePoint STANDALONE não serão suportadas, ou seja, aquelas que vinham com SQL Express junto. Ou seja, você precisará instalar, obrigatoriamente, o SQL Server e o SharePoint para rodar o SharePoint 2016.
  • Você poderá migrar os dados do seu SharePoint 2013 para o 2016 utilizando um produto ou API; ou utilizar a técnica do Database Attach para realizar um Upgrade. 

Autenticação e Autorização de Usuários

Essa é uma mudança que eu, particularmente, gosto bastante. O provider de autenticação principal será OAuth e JWT/SAML com WSFED. Sendo assim, será muito mais fácil integrar com recursos da nuvem (Azure AD, por exemplo).

Eu disponibilizei um exemplo no Github sobre como utilizar OAuth N no AzureAD para autorizar uma chamada a uma Web API e essa API fazer uma chamada como se fosse o usuário (“on behalf of”) ao SharePoint Online: https://github.com/RARomano/AzureAD-WebAPI-SPOnline.

Classic-mode authentication está deprecado e a Microsoft está fazendo um grande esforço em tirar o modelo de autenticação “Domain-based” e mudar para “Cloud-based”. 

Grande passo!

 

SMTP

O SharePoint 2016 suportará “STARTTLS connection encryption“, ou seja, agora os alertas e e-mails enviados pelo SharePoint serão encriptados. 😀

Além disso, o SMTP poderá utilizar outras portas além das default.

 

 

O que acharam?

 

Eu não vejo a hora do lançamento do produto 😀

 

“Novo” Posicionamento da Microsoft e Projeto Oxford

Olá SharePointers,

Recentemente, a Microsoft tem adotado uma postura bem diferente como empresa. Quem assistiu o Keynote do Build USA, pode notar um destaque que a Empresa estava dando por ser reconhecida como “Legal”, novamente, o bordão era “Microsoft is cool again”. É fácil encontrar na Internet referências e artigos sobre isso, destaco esse: http://www.businessinsider.com/suddenly-microsoft-is-cool-again-2013-2. E olha que esse texto é de 2013!!

O que isso significa na prática? Vemos um esforço contínuo da Microsoft em mudar alguns paradigmas, criar produtos inovadores (Hololens, Continuum, etc.), investir nos produtos existentes para que o público final não apenas “tenha” que utilizar os seus produtos, mas que todos queiram fazer isso. E queremos muito!

Os produtos estão cada vez mais integrados (o que sempre achei uma grande sacada da Microsoft, sua plataforma funciona muito bem integrada), fáceis de usar, em alguns casos podemos criar ambientes complexos com alguns cliques em um Wizard.

O que mais me surpreendeu, ou onde talvez tenha caído a ficha, foi ao final do Ignite, um cliente americano que é fanático por tecnologias Java, núvem na Amazon e coisas do tipo, me falar que a Microsoft tinha feito um grande trabalho. Que ele deixou o evento decidido a utilizar a plataforma da Microsoft e deixar a abordagem que estava tentando fazer manualmente de lado. Fiquei sem palavras!

Build Tour SP

Aliás, não precisamos ir muito longe… O Build Tour que ela fez essa semana foi fantástico. A ideia de fazer um evento dentro de um estádio de futebol foi fantástica. Um dia de evento dentro do badalado Allianz Parque (e olha que sou São Paulino :D) com o objetivo de mostrar alguns highlights do Build San Francisco. Vejam essa reportagem da Info: http://info.abril.com.br/noticias/tecnologia-pessoal/2015/05/querendo-ser-legal-novamente-microsoft-faz-primeira-edicao-da-build-no-brasil.shtml

Uma das coisas que nos foi mostrado no evento foi como o Azure Machine Learning está interessante e muito fácil de utilizar. É incrível como podemos deixar nossa aplicação inteligente, utilizando-se de complexos algorítmos de forma tão simples e rápida.

Projeto Oxford

Uma coisa que me chamou a atenção é o Projeto Oxford (http://www.projectoxford.ai). É um projeto de Machine Learning com APIs complexas disponibilizadas gratuitamente para qualquer pessoa testar. Eu fiz alguns testes com a API e logo mais postarei alguns artigos sobre o “HOW-TO”.

Essa API compreende:

  • Detecção de Face
  • Reconhecimento de Voz
  • Visão Computacional
  • Processamento de Linguagem Natural

Para quem quiser dar uma olhada no SDK, acesse o link aqui: http://www.projectoxford.ai/sdk

Um dos exemplos mostrados no evento é você enviar uma imagem e a API consegue dizer a categoria da imagem baseada nos elementos que estão na foto, por exemplo: Se a foto tem um cachorro, a API retornará ANIMALS – DOG.

A aplicabilidade disso é fantástica.

Além disso, você poderá criar a sua própria rede neural e treiná-la da forma que melhor convém para a sua necessidade de negócio. Leia mais sobre isso em: http://azure.microsoft.com/en-us/services/machine-learning/

 

Enfim, cada vez mais tenho mais orgulho de poder ser um influenciador de uma empresa como a Microsoft 😀

Microsoft Azure – Continuous Code Delivery using Azure Web Sites

Olá SharePointers,

O post de hoje não é especificamente sobre SharePoint, mas sobre desenvolvimento, mais especificamente, códigos.

Em um processo de ALM, uma das coisas que visamos é a qualidade do código produzido. É muito comum você ouvir falar em Integração contínua, Build Servers e outros termos referentes a esse processo.

O meu foco hoje é mostrar como é simples fazer uma das etapas desse processo de forma muito simples através do Azure.

Quando fazemos uma alteração no código, esse código deve passar por testes. Uma das etapas dos testes é liberar a versão para que os profissionais de QC possam analisar a aplicação.

É importante que esse trabalho seja automático, sem depender de uma pessoa. Ou seja, se o build for realizado com sucesso, ele deve ser instalado no ambiente correto para testes. O processo é bem mais complexo do que isso, mas não é o foco desse artigo.

Abra o Portal de Gerenciamento do Azure, clique em New, Compute, Web App, Custom Create

image

Preencha a URL desejada, e marque o checkbox Publish from source control.

image

Escolha o seu gerenciador de código-fonte, coloque suas credenciais e depois escolha o repositório.

 

image

Com isso, a cada checkin no seu código, o deploy desse código será feito automaticamente para esse site do Azure.

Fácil, não?

 

Referência

http://weblogs.asp.net/scottgu/windows-azure-import-export-hard-drives-vm-acls-web-sockets-remote-debugging-continuous-delivery-new-relic-billing-alerts-and-more

SharePoint 2016

Olá SharePointers,

A ansiedade é grande mas ela está chegando ao fim. O SharePoint 2016 está aí. Hoje, véspera do início do evento Microsoft Ignite, já tem várias informações postadas pelas pessoas que estão presentes no evento sobre o novo produto que tanto aguardamos.

Uma das coisas que divulgaram foi o primeiro print de uma tela do novo SharePoint.

Como era de se esperar, o visual está bem parecido com o que temos hoje no Office 365 / SharePoint Online e algumas coisas remetem ao SharePoint 2013. 

Anunciaram uma versão Beta para o Q4 de 2015 e a versão final do produto em Q2 de 2016. O mais difícil é segurar a ansiedade…. 

 

Com o avanço do Azure e todas as forças da Microsoft concentradas em sua nova ideologia “Cloud First”, era de se esperar que esse produto viesse muito mais integrado com o ambiente Online, prevendo migrações mais simples entre eles.

O time de produto do SharePoint fez um post falando sobre alguns detalhes do SharePoint 2016 e suas áreas de foco (http://blogs.office.com/2015/04/16/sharepoint-server-2016-update/)

Vale ressaltar que eles estão comprometidos em continuar agregando valor para instalações On-Premises e, ainda, dar a possibilidade de explorar um novo cenário “Híbrido” envolvendo SP 2016 e Office 365.

As áreas que o novo produto deverá focar são:

  • Improved user experiences
  • Cloud-inspired infrastructure
  • Compliance and reporting

 

TAP – Technology Adoption Program

Existe, ainda, um programa da Microsoft que incentiva a adoção das novas tecnologias. Para quem quiser participar, clique no link http://prereleaseprograms-public.sharepoint.com/Pages/BusinessProfile.aspx.

Esse programa dá a possibilidade de você dar um feedback sobre o produto e ter um relacionamento próximo com o time de produto do SharePoint.

 

Além disso, algumas imagens foram divulgadas sobre o modelo Híbrido que foi citado:

 

Vamos aguardar mais informações.. Assim que eu receber mais updates do evento eu posto 😀

Abraços!

 

Protegendo Web API utilizando Azure AD e integrando com SharePoint Online usando oAuth

Olá SharePointers,

Hoje vou falar de um cenário Híbrido envolvendo SharePoint Online e Azure.

É comum para nós, especialistas no produto, encontrarmos cada vez mais cenários híbridos e integrados. 

 

Cenário

Tenho uma aplicação desenvolvida em alguma linguagem que está fazendo Single Sign On com o Azure AD utilizando oAuth e OpenID. Basicamente, quando um usuário se loga na aplicação, a aplicação vai até o Azure e solicita um token de acesso para esse recurso. 

Com esse token, preciso conseguir acessar uma Web API que está hospedada no Azure. Essa WebAPI não permite acesso anônimo. Para acessar essa API, eu devo utilizar o token de acesso recebido na etapa anterior. Por questões de segurança, eu não tenho acesso a credencial do usuário (usuário e senha).

Após autenticado, essa WebApi fará um request para o SharePoint Online, utilizando o token do usuário que se logou na primeira aplicação. 

 

 

Tem uma série de leituras interessantes sobre o assunto e vários exemplos na internet, mas nenhum mostrava como fazer as duas partes. É comum encontrar um exemplo de como proteger a WebApi ou como acessar o SharePoint online utilizando AccessTokens, mas nenhum faz essa ligação direta.

Pensando nessa dificuldade criei um Projeto no GitHub https://github.com/RARomano/AzureAD-WebAPI-SPOnline que demonstra, passo-a-passo, como fazer essa integração de forma simples.

Estou seguindo o mesmo modelo de aplicações que o time de Azure e a comunidade americana estão construindo, veja mais informações aqui: https://github.com/AzureADSamples.

O MVP de SharePoint Andrew Connell fez vários posts legais sobre o assunto e estão na seção “Referências” abaixo.

 

Basicamente, o que acontece por trás dos panos é o seguinte:

  1. O Usuário acessa a aplicação. 
  2. Windows Azure redireciona para página de Login
  3. O usuário faz o login
  4. A aplicação recebe um access token
  5. A aplicação faz um request para WebAPI utilizando esse token
  6. A Web API solicita um outro token para acessar o SharePoint e traz os dados desejados

É importante ressaltar que, nesse cenário, estamos utilizando o modelo App+User, ou seja, aplicação do Azure está agindo como se fosse o usuário. Inclusive, se você fizer uma operação que adicione ou modifique um item, no campo Modificado/Criado por aparecerá:

Criado por [nome do app] em nome do [Usuário]

 

 

Pensando em facilitar a nossa vida e facilitar esse processo de obter os tokens, criaram uma biblioteca denominada ADAL.NET (https://github.com/AzureAD/azure-activedirectory-library-for-dotnet). Ela ajuda e muito no processo. Estou utilizando essa biblioteca nos exemplos que fiz, mas todo o processo poderia ser feito de maneira manual fazendo HTTP Requests manuais para o Azure AD.

 

Referências

http://bitoftech.net/2014/09/12/secure-asp-net-web-api-2-azure-active-directory-owin-middleware-adal/

http://blogs.technet.com/b/ad/archive/2015/03/06/simplifying-our-azure-ad-authentication-flows.aspx

https://github.com/AzureADSamples

https://msdn.microsoft.com/en-us/library/azure/jj573266.aspx

https://msdn.microsoft.com/en-us/library/azure/dn499820.aspx

http://www.andrewconnell.com/blog/user-app-app-only-permissions-client-credentials-grant-flow-in-azure-ad-office-365-apis

http://www.andrewconnell.com/blog/looking-at-the-different-oauth2-flows-supported-in-azuread-for-office-365-apis

https://msdn.microsoft.com/pt-br/library/azure/jj573266.aspx

http://www.cloudidentity.com/blog/2013/09/12/active-directory-authentication-library-adal-v1-for-net-general-availability/

https://github.com/AzureAD/azure-activedirectory-library-for-dotnet