我们有一个在Azure VM上运行的Flask Web应用程序,用于处理通过AD进行的身份验证。我们已经在Azure上注册了该应用程序并获得了详细信息。尝试获取授权代码时,我面临以下问题。请帮助。
也-在Azure上注册应用程序后,我获得了客户端ID。还可以从注册页面获取客户秘密吗?此客户端机密应用程序特定吗?我的意思是每次我注册一个新的应用程序时,都会生成并显示给我客户密码吗?
当我的flask应用程序在Linux VM上运行时,浏览器会在哪里弹出?是否基于重定向URI?因为我的重定向URI也在没有用户代理的Linux机器上。
这是获得授权的代码-code @ APP.route('/ access') def access():
auth_state = str(uuid.uuid4())
SESSION.auth_state = auth_state
URL = config.AUTHORITY_URL + '/oauth2/authorize?'
payload = urllib.parse.urlencode({'response_type': 'code',
'client_id': config.CLIENT_ID,
'redirect_uri': config.REDIRECT_URI,
'state': auth_state,
'resource': config.RESOURCE})
return redirect(URL + payload)
重定向URI端点是/ login / authorized。
@APP.route('/login/authorized')
def authorized():
cd = flask.request.args['code']
auth_context =
adal.AuthenticationContext(config.AUTHORITY_URL,api_version=None)
response_with_token =
auth_context.acquire_token_with_authorization_code
(cd,config.REDIRECT_URI,config.RESOURCE,config.CLIENT_ID,
config.CLIENT_SECRET)
SESSION.headers.update({'Authorization': f"Bearer
{response_with_token['accessToken']}",
'Accept': 'application/json',
'Content-Type': 'application/json',
'return-client-request-id': 'true'})
return redirect('/dbcall')
方法“访问”为我提供200个状态,并重定向到/ login / authorized。但是方法“授权”给我一个关键错误,即代码未定义。我想我没有收到来自AD服务器的任何响应。那是对的吗?我有什么错误吗?感谢您的所有帮助。