Cómo puedo definir políticas para mi API para los dos tipos de tokens de acceso, una de ellas con una identidad (sub) y uno que no?
Estoy usando IdentityServer4 a través de ASPNET Núcleo, y quiero a los usuarios acceder a mi API, tanto por el navegador web a través de su identidad (Implícito e Híbridos), y por los clientes a través de programación (las Credenciales del Cliente). Me doy cuenta de todo lo que tengo que hacer es agregar AddIdentityServerAuthentication
y estoy hecho. Sin embargo, que sólo resuelve la autenticación de los aspectos de este problema, no de la autorización.
Autorización:
Con ASPNET Núcleo, sólo puede utilizar la Función de base de auth (o PolicyServer permisos que es similar), pero sólo si usted tiene una identidad con papel de reclamaciones, que no trabajo para las credenciales del cliente. Lo que nos lleva a la necesidad de asegurar papel, o las políticas Y ámbitos. ¿Cómo puedo hacer esto?
- No puedes tener múltiples políticas, si no, ambos deben pasar.
- Usted no puede tener varias auth esquemas, porque mi llamada a
AddIdentityServerAuthentication
se tiene que utilizar la misma autoridad, entonces, ¿cómo IdentityServer4.AccessTokenValidation/JwtBearer saber que usted esquema reto que está tratando de pasar? - Múltiples requerimientos que podría funcionar, pero usted necesita para añadir requisitos de la condición de que usted está tratando con una no-identidad token de acceso. Cómo se puede detectar qué tipo de ficha que se enfrentar? Es seguro decir "Si no hay sub, es cliente de creds."
- Debo de chatarra de este diseño y de la fuerza de código de dispositivo de flujo de mis usuarios? Mira
az cli
por arte de magia se abre un navegador y, a continuación, puede iniciar secuencias de comandos de inmediato a su contenido de los corazones. IS4 apoya esto con facilidad, especialmente converficationUrlComplete
Creo que tengo un trabajo POC, pero yo estoy lejos de ser feliz con ella. https://gist.github.com/VictorioBerra/8c333a228c55d86a7c15f7f300284634
Esto implica, básicamente, la re-implementación del ámbito predeterminado de reclamación requisito controlador y policyservers requisito de permiso controlador. Pero esa es la única manera de aplicar condicionalmente el requisito de controladores basados en el tipo de token.