final version
This commit is contained in:
parent
8675240084
commit
7366adbf65
11
app.py
11
app.py
@ -35,9 +35,14 @@ oauth.register(
|
||||
)
|
||||
|
||||
|
||||
@app.route("/api")
|
||||
def api():
|
||||
return make_response(redirect(resource_server_url + "/api?" + urllib.parse.urlencode({'callbackUrl': client_url})))
|
||||
@app.route("/service1")
|
||||
def service1():
|
||||
return make_response(redirect(resource_server_url + "/api/v1/service1?" + urllib.parse.urlencode({'callbackUrl': client_url})))
|
||||
|
||||
|
||||
@app.route("/service2")
|
||||
def service2():
|
||||
return make_response(redirect(resource_server_url + "/api/v1/service2?" + urllib.parse.urlencode({'callbackUrl': client_url})))
|
||||
|
||||
|
||||
@app.route("/auth")
|
||||
|
134
keycloak/client-oidc.json
Normal file
134
keycloak/client-oidc.json
Normal file
@ -0,0 +1,134 @@
|
||||
{
|
||||
"clientId": "client-oidc",
|
||||
"name": "OIDC demo",
|
||||
"description": "",
|
||||
"rootUrl": "http://localhost:5001",
|
||||
"adminUrl": "http://localhost:5001",
|
||||
"baseUrl": "http://localhost:5001",
|
||||
"surrogateAuthRequired": false,
|
||||
"enabled": true,
|
||||
"alwaysDisplayInConsole": true,
|
||||
"clientAuthenticatorType": "client-secret",
|
||||
"secret": "BqWWnuj5JkgZZWEaXuR8bprEx53lqGxC",
|
||||
"redirectUris": [
|
||||
"/*"
|
||||
],
|
||||
"webOrigins": [],
|
||||
"notBefore": 0,
|
||||
"bearerOnly": false,
|
||||
"consentRequired": true,
|
||||
"standardFlowEnabled": true,
|
||||
"implicitFlowEnabled": false,
|
||||
"directAccessGrantsEnabled": true,
|
||||
"serviceAccountsEnabled": true,
|
||||
"authorizationServicesEnabled": true,
|
||||
"publicClient": false,
|
||||
"frontchannelLogout": true,
|
||||
"protocol": "openid-connect",
|
||||
"attributes": {
|
||||
"oidc.ciba.grant.enabled": "false",
|
||||
"client.secret.creation.time": "1718829555",
|
||||
"backchannel.logout.session.required": "true",
|
||||
"post.logout.redirect.uris": "+",
|
||||
"display.on.consent.screen": "false",
|
||||
"oauth2.device.authorization.grant.enabled": "false",
|
||||
"backchannel.logout.revoke.offline.tokens": "false"
|
||||
},
|
||||
"authenticationFlowBindingOverrides": {},
|
||||
"fullScopeAllowed": false,
|
||||
"nodeReRegistrationTimeout": -1,
|
||||
"protocolMappers": [
|
||||
{
|
||||
"name": "Client IP Address",
|
||||
"protocol": "openid-connect",
|
||||
"protocolMapper": "oidc-usersessionmodel-note-mapper",
|
||||
"consentRequired": false,
|
||||
"config": {
|
||||
"user.session.note": "clientAddress",
|
||||
"id.token.claim": "true",
|
||||
"introspection.token.claim": "true",
|
||||
"access.token.claim": "true",
|
||||
"claim.name": "clientAddress",
|
||||
"jsonType.label": "String"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "realm roles",
|
||||
"protocol": "openid-connect",
|
||||
"protocolMapper": "oidc-usermodel-realm-role-mapper",
|
||||
"consentRequired": false,
|
||||
"config": {
|
||||
"user.attribute": "foo",
|
||||
"introspection.token.claim": "true",
|
||||
"access.token.claim": "true",
|
||||
"claim.name": "realm_access.roles",
|
||||
"jsonType.label": "String",
|
||||
"multivalued": "true"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "client roles",
|
||||
"protocol": "openid-connect",
|
||||
"protocolMapper": "oidc-usermodel-client-role-mapper",
|
||||
"consentRequired": false,
|
||||
"config": {
|
||||
"user.attribute": "foo",
|
||||
"introspection.token.claim": "true",
|
||||
"access.token.claim": "true",
|
||||
"claim.name": "resource_access.${client_id}.roles",
|
||||
"jsonType.label": "String",
|
||||
"multivalued": "true"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "audience resolve",
|
||||
"protocol": "openid-connect",
|
||||
"protocolMapper": "oidc-audience-resolve-mapper",
|
||||
"consentRequired": false,
|
||||
"config": {
|
||||
"lightweight.claim": "false",
|
||||
"access.token.claim": "true",
|
||||
"introspection.token.claim": "true"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Client Host",
|
||||
"protocol": "openid-connect",
|
||||
"protocolMapper": "oidc-usersessionmodel-note-mapper",
|
||||
"consentRequired": false,
|
||||
"config": {
|
||||
"user.session.note": "clientHost",
|
||||
"id.token.claim": "true",
|
||||
"introspection.token.claim": "true",
|
||||
"access.token.claim": "true",
|
||||
"claim.name": "clientHost",
|
||||
"jsonType.label": "String"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Client ID",
|
||||
"protocol": "openid-connect",
|
||||
"protocolMapper": "oidc-usersessionmodel-note-mapper",
|
||||
"consentRequired": false,
|
||||
"config": {
|
||||
"user.session.note": "client_id",
|
||||
"id.token.claim": "true",
|
||||
"introspection.token.claim": "true",
|
||||
"access.token.claim": "true",
|
||||
"claim.name": "client_id",
|
||||
"jsonType.label": "String"
|
||||
}
|
||||
}
|
||||
],
|
||||
"defaultClientScopes": [
|
||||
"profile",
|
||||
"groups",
|
||||
"email"
|
||||
],
|
||||
"optionalClientScopes": [],
|
||||
"access": {
|
||||
"view": true,
|
||||
"configure": true,
|
||||
"manage": true
|
||||
}
|
||||
}
|
@ -1,6 +1,5 @@
|
||||
authlib
|
||||
flask
|
||||
requests
|
||||
urllib.parse
|
||||
PyJWT
|
||||
cryptography
|
||||
|
@ -5,9 +5,10 @@
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
|
||||
<title>A Python OIDC demo</title>
|
||||
<title>OIDC demo</title>
|
||||
|
||||
<link rel="stylesheet" href="//maxcdn.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap.min.css">
|
||||
<!-- <link rel="stylesheet" href="//maxcdn.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap.min.css">-->
|
||||
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC" crossorigin="anonymous">
|
||||
|
||||
<!-- HTML5 Shim and Respond.js IE8 support of HTML5 elements and media queries -->
|
||||
<!-- WARNING: Respond.js doesn't work if you view the page via file:// -->
|
||||
@ -18,7 +19,7 @@
|
||||
</head>
|
||||
<body>
|
||||
<div class="container">
|
||||
<h1>A Python OIDC demo</h1>
|
||||
<h1>OIDC demo</h1>
|
||||
|
||||
{% block content %}{% endblock %}
|
||||
</div>
|
||||
|
@ -28,6 +28,7 @@
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
|
||||
<a href="/api" class="btn btn-secondary">Call API</a>
|
||||
<a href="/service1" class="btn btn-secondary">Call service1 API</a>
|
||||
<a href="/service2" class="btn btn-secondary">Call service2 API</a>
|
||||
|
||||
{% endblock %}
|
||||
|
Loading…
Reference in New Issue
Block a user