Cómo implementar una aplicación en la que el usuario pueda ser autenticado por un tercero o por mi propia aplicación

Debe separar algunas cosas y pensar qué / cómo desea lograr la autenticación y autorización.
Interfaz de usuario – Páginas web – Tiene autenticación social y la suya propia. Cuando usa su propia autenticación, lo que está haciendo es autenticar (verifique el nombre de usuario y la contraseña cifrada en su base de datos o cualquier repositorio y marco que esté usando … Spring + LDAP) primero y luego cree algún tipo de token y adjúntelo a la cookie / sesión, etc. (En su mayoría, el marco lo cuida, pero se entiende la idea).
Cuando usa la autenticación social, después de redirigir al usuario para que se autentique con Iniciar sesión o Registrarse, se los redirige a su aplicación, una vez que verifica / adquiere el token de acceso (todo es parte de la integración de Facebook OAuth, tienen muestras en muchos idiomas), debe seguir la segunda parte de “su propia autenticación”, la que subrayé anteriormente.
Si verifica el marco que está utilizando o pregunta por ese marco si admite el inicio de sesión de Facebook, entonces sabe que se puede integrar fácilmente y luego puede extenderlo para proporcionar otros inicios de sesión de terceros (Twitter, Google, etc.)

Ahora viene la API REST. La autenticación del usuario para la aplicación web es diferente de acceder a la API REST. Cuando accede a la API REST, está haciendo esto detrás de una aplicación (aplicación web, aplicación móvil, etc.). Sí, puede habilitar fácilmente la autenticación básica, pero no solo debe entregar el nombre de usuario y la contraseña a cada aplicación, sino también asegurarse de que la usen correctamente (como no almacenarlos en JavaScript y enviar el nombre de usuario y la contraseña en la llamada REST API desde el navegador) .
Entonces, lo que necesita es una forma de obtener el token OAuth (u otro token / estándar) después de que el usuario se autentique y use ese token para acceder a la API REST.
SI lo entiendo correctamente, no está buscando exponer su API para terceros, sino que desea permitir el inicio de sesión de terceros (Social Auth), pero después de eso, el usuario debería poder acceder a la interfaz de usuario o REST API. Puede implementar OAuth si es compatible con el marco o su propio sistema basado en token. Vea mi otra respuesta sobre la diferencia entre OAuth y Non authn: la respuesta de Sitaraman Lakshminarayanan a ¿Cuál es la diferencia entre OAuth y la autenticación basada en token? Ambos usan un token que está asociado con cada cliente y en lugar de nombre de usuario y contraseña se usa ese token. Entonces cuál es la diferencia?

Buena suerte.

Puede consultar este blog, en el que Chris Sevilleja (@sevilayha) explica sobre los JSON Web Tokens (JWT). Son una forma estándar de implementar autenticaciones.

Aqui esta el link:

La anatomía de un token web JSON

Dos grandes lugares para comenzar:

http://projects.spring.io/spring

http://securesocial.ws

Puede usar los tokens web JSON para la autenticación.
Autenticación de token web JSON con Flask y Angularjs