gpt4 book ai didi

azure - 没有 Client_secret 的 Cypress SSO Azure

转载 作者:行者123 更新时间:2023-12-03 00:21:45 26 4
gpt4 key购买 nike

我正在努力解决尝试使用 Cypress 从 Microsoft Azure 通过单点登录登录时遇到的问题。不使用 Client_Secret 是否可以做到这一点?我该怎么做?

我花了一个多星期的时间试图解决这个问题......

我在这方面是个新手,所以如果你能帮助我,我将非常感激。

非常感谢,

最佳答案

是的,可以。在门户中导航到您的 AD 应用 -> 身份验证 -> 将允许公共(public)客户端流设置为,如下所示。

enter image description here

然后在 blog ,在步骤用于模仿react-adal的Cypress实用程序中,它使用 client credential flow ,博客下有@Bryce Kolton的评论帖子,他使用ROPC flow ,在此流程中,您可以按照上面的更改(允许公共(public)客户端流程)通过公共(public)客户端应用程序在没有 Client_Secret 的情况下使用它,只需引用它即可。

/* eslint-disable no-underscore-dangle */
import { AuthenticationContext } from ‘react-adal’;
import { azTenantId, azClientId } from ‘../../server/config/environment’;

// Need to get data points from server’s environment, not src
const adalConfig = {
tenant: azTenantId,
clientId: azClientId,
cacheLocation: ‘localStorage’,
replyUrl: ‘/’,
endpoints: {
api: ”,
},
};
const authContext = new AuthenticationContext(adalConfig);

export default async function doLogin() {
// getCachedToken also does an expiration check so we know for sure the tokens are usable
if (
!authContext.getCachedToken(adalConfig.endpoints.api)
|| !authContext.getCachedToken(adalConfig.clientId)
) {
const response = await cy.request({
method: ‘POST’,
url:
‘https://login.microsoftonline.com/mercedesme.onmicrosoft.com/oauth2/token’,
// qs: { ‘api-version’: ‘1.0’ }, // uncomment if your consuming resource expects the ‘aud’ to have a prefix of ‘sn:’
headers: {
‘cache-control’: ‘no-cache’,
‘content-type’:
‘multipart/form-data; boundary=—-WebKitFormBoundary7MA4YWxkTrZu0gW’,
},
form: true,
body: {
grant_type: ‘password’,
response_type: ‘code’,
client_id: ‘[[yourappsclientid]]’,
username: ‘[[yourtestuzseremail]]’,
password: ‘[[yourtestuserpassword]]!’,
scope: ‘openid’,
resource: ‘[[some-resource-id]]’,
},
});
// Store the token and data in the location where adal expects it
authContext._saveItem(authContext.CONSTANTS.STORAGE.IDTOKEN, response.body.access_token);
authContext._saveItem(
authContext.CONSTANTS.STORAGE.ACCESS_TOKEN_KEY + adalConfig.endpoints.api,
response.body.access_token,
);
authContext._saveItem(
authContext.CONSTANTS.STORAGE.ACCESS_TOKEN_KEY + adalConfig.clientId,
response.body.access_token,
);
authContext._saveItem(
authContext.CONSTANTS.STORAGE.EXPIRATION_KEY + adalConfig.endpoints.api,
response.body.expires_on,
);
authContext._saveItem(
authContext.CONSTANTS.STORAGE.EXPIRATION_KEY + adalConfig.clientId,
response.body.expires_on,
);
authContext._saveItem(
authContext.CONSTANTS.STORAGE.TOKEN_KEYS,
[adalConfig.clientId].join(authContext.CONSTANTS.RESOURCE_DELIMETER)
+ authContext.CONSTANTS.RESOURCE_DELIMETER,
);
}
}

要成功使用 ROPC 流程,请确保您的场景满足以下要求,例如您的用户帐户未启用 MAF。

enter image description here

关于azure - 没有 Client_secret 的 Cypress SSO Azure,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67537455/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com