Todos nestas respostas ignoraram o verdadeiro controle / autorização de acesso.
Se, por exemplo, suas APIs / serviços REST da Web forem sobre registros médicos de POST / GETing, convém definir uma política de controle de acesso sobre quem pode acessar os dados e sob quais circunstâncias. Por exemplo:
- os médicos podem OBTER o prontuário médico de um paciente com o qual mantêm uma relação de cuidado
- ninguém pode POSTAR dados médicos fora do horário de prática (por exemplo, das 9 às 5)
- os usuários finais podem OBTER registros médicos de sua propriedade ou registros médicos de pacientes de quem são os responsáveis
- os enfermeiros podem ATUALIZAR o prontuário médico de um paciente que pertence à mesma unidade que o enfermeiro.
Para definir e implementar essas autorizações refinadas, você precisará usar uma linguagem de controle de acesso baseada em atributo chamada XACML, a eXtensible Access Control Markup Language.
Os outros padrões aqui são os seguintes:
- OAuth: id. federação e delegação de autorização, por exemplo, deixar um serviço agir em meu nome em outro serviço (o Facebook pode postar no meu Twitter)
- SAML: federação de identidade / SSO da web. SAML é muito sobre quem é o usuário.
- Padrões WS-Security / WS- *: focam na comunicação entre serviços SOAP. Eles são específicos para o formato de mensagens no nível do aplicativo (SOAP) e lidam com aspectos de mensagens, como confiabilidade, segurança, confidencialidade, integridade, atomicidade, evento ... Nenhum abrange o controle de acesso e todos são específicos ao SOAP.
XACML é independente de tecnologia. Pode ser aplicado a aplicativos java, .NET, Python, Ruby ... serviços da web, APIs REST e muito mais.
A seguir, são recursos interessantes: