Pergunta

Eu preciso implementar um SSO entre um site SharePoint e um site baseado em PHP personalizado wich residir em um domínio diferente. Eu preciso usar as contas de usuário do SharePoint para fazer logon no site do PHP. (Eu vou ter uma controll total sobre a fonte PHP)

Isso é possível? Todas as dicas e truques?

Foi útil?

Solução

A minha suposição é que você tem total controle sobre seu aplicativo php / domínio, mas uma equipe diferente está a gerir o servidor SharePoint. Também supor que você pode perguntar a equipe do SharePoint para criar uma Web Part simples para sua funcionalidade SSO.

Se este for o caso, você pode pedir a equipe do SharePoint para criar uma Web Part, que tem um link para seu site nele. Quando o usuário clica no link, o pedido é feito de volta para o servidor SharePoint, o servidor sharepoint toma o nome de logon do usuário, criptografa usando sua chave pública, e adiciona-lo para um url em seu site php então envia isto como uma volta de redirecionamento para o navegador. Portanto, a localização parece com isso:

https:? //Your.php.domain/sso.php logon = encrypted_users_logon_name & api_key = some_token

Seu script sso.php irá verificar o api_key é um token válido de seu parceiro do SharePoint, e em seguida, descriptografar o nome de logon do usuário que está tentando entrar. Você pode obter mais extravagante, e ter um retorno de chamada no site do SharePoint para confirmar a solicitação de logon é legítimo dentro de algum intervalo de tempo, ou assar isso no nome de logon criptografadas, mas esta é uma maneira barebones para fazê-lo, supondo que você confiar pedidos provenientes do parceiro sharepoint.

Os desenvolvedores sharepoint .net irá provavelmente ser capaz de fazer qualquer criptografia que você quer, então escolha um algoritmo que você pode usar em PHP e .NET lados e dar-lhes a chave para o uso de criptografia e o formato das informações a criptografar. algo como n = logon_name; expire = timestamp; então quando você decifrar, se for após o tempo expirar, então você negar o logon.

Outras dicas

Eu não sei muito sobre esta área, mas espero que isso pode ajudar você aponte na direção certa.

Investigar LDAP ...

Você pode configurar o PHP para credenciais usar LDAP. Se o seu site SharePoint usa o Active Directory, em seguida, você pode expor este diretório como fonte LDAP e usar isso na aplicação PHP.

Automated sign-in ...

Tendo o sinal em acontecer automaticamente entre cada site é uma questão muito diferente. por exemplo. Eu estou conectado ao MOSS já, clique em um link que vai para o aplicativo PHP e achar que já estou logado lá também. Para isso, você precisará investigar usando algo como Kerberos chaves / autenticação. É um confuso e difícil área.

Bem, nós temos estado em mesma situação, mas estamos usando asp.net em combinação com php para SSO. o código asp.net faz a autenticação do Windows, e cria um registro no banco de dados mysql, que contém nome de usuário e uma chave única, e atribuir esses valores para um cookie. então, redireciona o usuário para PHP aplicativo.

o aplicativo php lê esses valores de cookie e compará-los com os valores do banco de dados para garantir a solicitação para autêntico. bem isso é a solução para ter a conexão única em PHP e tem ponto de compartilhamento de trabalho em conjunto com o PHP. mas eu ainda recomendo usar Kerb_auth_mod para SSO em php. que foi finalmente fez.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top